opencv 中的cvcopy函数参数问题!!!!

2024-12-12 12:44:21
推荐回答(4个)
回答1:

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)。

回答2:

有一个方法,首先获取小图像的大小:CvSize rect=cvGetSize(SmallImg);
cvSetImageROI(BigImg,rect);
cvCopy(SmallImg,BigImg);
cvResetImageROI(BigImg);
理论上这样应该可以实现你所需的功能,你试下。

回答3:

设置掩码区域

回答4:

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 );