cvcopy : 拷贝一个数组给另一个数组 void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL ); src 输入数组。 dst 输出数组。 mask 操作掩码是8比特单通道的数组,它指定了输出数组中被改变的元素。 函数cvCopy从输入数组中复制选定的成分到输出数组: 如果mask(I)!=0,则dst(I)=src(I)。 如果输入输出数组中的一个是IplImage类型的话,其ROI和COI将被使用。输入输出数组必须是同样的类型、维数和大小。函数也可以用来复制散列数组(这种情况下不支持mask)。
有一个方法,首先获取小图像的大小:CvSize rect=cvGetSize(SmallImg);
cvSetImageROI(BigImg,rect);
cvCopy(SmallImg,BigImg);
cvResetImageROI(BigImg);
理论上这样应该可以实现你所需的功能,你试下。
设置掩码区域
IplImage* merge=cvCreateImage(cvSize(3*frame->width,frame->height),IPL_DEPTH_8U,3);
cvSetZero(merge);
CvRect rect1=cvRect(0,0,frame->width,frame->height);
cvSetImageROI(merge,rect1);
cvCopy(frame,merge,NULL);
cvResetImageROI(merge);
CvRect rect2=cvRect(frame->width,0,frame->width,frame->height);
cvSetImageROI(merge,rect2);
cvCopy(gray,merge,NULL);
cvResetImageROI(merge);
CvRect rect3=cvRect(2*frame->width,0,frame->width,frame->height);
cvSetImageROI(merge,rect3);
cvCopy(toCanny,merge,NULL);
cvResetImageROI(merge);
cvNamedWindow("merge", CV_WINDOW_AUTOSIZE );
cvShowImage("merge", merge );