aihot  2017-06-04 13:24:56  OpenCV |   查看评论   

 

  1. /* 将源数组复制到目标数组 */
  2. CVAPI(void)  cvCopy( const CvArr* src, CvArr* dst,
  3.                      const CvArr* mask CV_DEFAULT(NULL) );

  4. /* 创建一个IPL图像副本(widthStep可能不同) */
  5. CVAPI(IplImage*) cvCloneImage( const IplImage* image );

 如果设定了ROI等参数的时候,cvCopy只是复制被设定的区域,复制到一个和所设定参数相吻合的新的IplImage中

而cvCloneImage则是将整个IplImage结构复制到新的IplImage中,其中的ROI等参数也会一同复制。新的IplImage将会和原来的一模一样。

 

cvCopy的原型是:

void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );

在使用这个函数之前,你必须用cvCreateImage()一类的函数先开一段内存,然后传递给dst。cvCopy会把src中的数据复制到dst的内存中。如果mask(x,y)=0,则不对src/dst的(x,y)操作操作;如果mask(x,y)!=0, 则操作。

 

cvCloneImage的原型是:

IplImage* cvCloneImage( const IplImage* image );

在使用函数之前,不用开辟内存。该函数会自己开一段内存,然后复制好image里面的数据,然后把这段内存中的数据返回给你。

 

clone是把所有的都复制过来,也就是说不论你是否设置Roi,Coi等影响copy的参数,clone都会原封不动的克隆过来。

copy就不一样,只会复制ROI区域等。用clone复制之后,源图像在内存中消失后,复制的图像也变了,而用copy复制,源图像消失后,复制的图像不变。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自十七、cvCopy与cvCloneImage的区别(OpenCV学习笔记)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]