C++이미지 경계 확장 함수 copyMakeBorder

실험 목적:임의의 그림 을 최 장 변 에 따라 정사각형 그림 으로 확장 하고 3 채널 평균 값 으로 상수 확장 합 니 다.
1.Mat 실현
//
int expandImg(
	const Mat  										srcImg,
	Mat											&dstImg)
{
	if(!srcImg.data || srcImg.channels()!=3){	
		cout<
여기 서 dstImg 은 size 를 미리 밝 히 지 않 았 고 확 장 된 size 는 srcImg 의 size 에 top,bottom,left,right 를 더 했다.
2.IplImage*구현:
IplImage * expandImg(
	IplImage * 										srcImg)
{
	if(!srcImg || srcImg->nChannels != 3 || srcImg->depth != IPL_DEPTH_8U){	
		cout<width <= srcImg->height){
		exwidth = srcImg->height;
		exheight = srcImg->height;
	}else{
		exwidth = srcImg->width;
		exheight = srcImg->width;
	}

	//
	exchannels = 3;
	IplImage* extendimg = cvCreateImage(cvSize(exwidth, exheight), IPL_DEPTH_8U, exchannels);	//      
	cvZero(extendimg);	// 0
	cvCopyMakeBorder(srcImg, extendimg, cvPoint(0,0), IPL_BORDER_CONSTANT, cvScalar(avgB, avgG, avgR));
	
	return extendimg;
}
여기 서 extendeImg 은 size 병 치 0 을 미리 밝 히 고 srcImg 을 extendeImg 의(0,0)위치 에 두 어 확장 합 니 다.
참고:
OpenCV 에서 이미지 경계 확장 copy MakeBorder 구현
이미지 변환-볼 륨 경계(cvCopyMakeBorder)
opencv 경계 채 우기 cvcopymakeborder

좋은 웹페이지 즐겨찾기