Opencv中cvCopy()和cvCloneImage()的区别:

1 cvCopy的原型是:void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );

在使用这个函数之前,你必须用cvCreateImage()一类的函数先开一段内存,然后传递给dst。cvCopy会把src中的数据复制到dst的内存中。
2  cvCloneImage的原型是:IplImage* cvCloneImage( const IplImage* image );

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

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

注意:使用cvCloneImage()容易造成内存泄露,所以慎用。

cvCloneImage()每次使用时编译器会分配新的内存空间,不会覆盖以前的内容,所以如果在循环中使用内存会迅速减小,每次用完都需要用cvRelease来释放。

解决方法是使用cvCopy函数代替。

cvCopy(pSrcImg,pImg,NULL);   //代替 pImg = cvCloneImage(pSrcImg);
pImg初始化时必须人工分配空间,否则上述函数不能执行。最后自己再人工释放,所谓自己动手丰衣足食!

本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/archive/2013/04/05/3001705.html,如需转载请自行联系原作者

【原】opencv中cvCopy()和cvCloneImage()的区别:相关推荐

  1. Opencv中cvCopy() 和cvCloneImage()的区别

    2019独角兽企业重金招聘Python工程师标准>>> cvCopy的原型是: void cvCopy( const CvArr* src, CvArr* dst, const Cv ...

  2. 原 c++中map与unordered_map的区别

    c++中map与unordered_map的区别 头文件 map: #include < map > unordered_map: #include < unordered_map ...

  3. OpenCV中 IplImage 与 Mat的区别

    IplImage: 在OpenCV中IplImage是表示一个图像的结构体,也是从OpenCV1.0到目前最为重要的一个结构: 在之前的图像表示用IplImage,而且之前的OpenCV是用C语言编写 ...

  4. OpenCV中CV_RGB2GRAY和CV_BGR2GRAY的区别

    原文链接:https://blog.csdn.net/weixin_42142612/article/details/80804039 平时处理图像的时候,很少用到彩色信息,一般都是直接转换为灰度图. ...

  5. opencv中vc14和vc15的区别?

    VC11,Visual Studio 2012编译器 VC14,Visual Studio 2015编译器 VC15,Visual Studio 2017编译器 - VC11构建需要安装Visual ...

  6. cvCopy和 cvCloneImage

    Opencv中cvCopy()和cvCloneImage()的区别: cvCopy的原型是: void cvCopy( const CvArr* src, CvArr* dst, const CvAr ...

  7. Opencv 中cv开头的函数和没有cv的区别,例如cvWaitkey()和waitKey()的区别

    1. 问题描述 在opencv中,有很多功能类似或者相同的函数,例如cvWaitKey()和waitKey().新手在刚刚接触opencv时,很容易弄糊涂,到底有什么区别,为什么要有这些功能类似的函数 ...

  8. opencv中 .at<uchar>()和.ptr<uchar>()使用方法的区别

    opencv中 .at<uchar>()和.ptr<uchar>()使用方法的区别在opencv中,.at<uchar>()和.ptr<uchar>() ...

  9. Numpy和Opencv中的reshape 和 transpose的区别

    Numpy和Opencv中的reshape 和 transpose的区别 在Numpy和Opencv中,都有两个函数:reshape 和 transpose. 该两个函数都具有改变维度的作用,在使用中 ...

最新文章

  1. JavaScript强化教程——jQuery选择器
  2. Linux平台swift语言开发学习环境搭建
  3. OpenCV Aruco模块常见问题解答
  4. 《雪国》—— 读后总结
  5. 修改ssh默认端口号
  6. php学习笔记细节部分。
  7. seata分布式事务原理_又见分布式事务之Seata
  8. Java基础学习总结(146)——开发人员日志实践规范
  9. java图像的灰度值获取_java获取图像灰度
  10. cmd 命令行中乱码问题解决
  11. IDEA工作常用快捷键
  12. 乱码 问号 java_java 中文 乱码 问号
  13. Xcode图片素材Slicing处理(包括缩放和延伸)
  14. 彻底解决Android Studio Minimum supported Gradle version is X.Y.Z. Current version is x.y.z.问题
  15. html excel 在线编辑,利用js实现在线编辑excel表格代码
  16. fairyGUI的学习记录1
  17. 2020蓝桥杯模拟赛题目解析(上)
  18. win11 下beyondcompare 右键菜单中无“比较“
  19. Python求数组的自然间断点
  20. KingBaseES 报错Connection to X.X.X.X:54321 refused.Check that the hostname and port are correct and ..

热门文章

  1. 3dm游戏运行包_动作游戏ACT 逃离丧尸镇 Shadows of Kurgansk 电脑游戏资源
  2. 对check list理解
  3. postman请求参数区别
  4. redis内存知识点
  5. 关于上篇文章的okhttp中对于onFailure回调的异常捕获
  6. VB 获取计算机的分辨率大小
  7. 【引用】mkswap 把一个分区格式化成为swap交换区
  8. 英语总结系列(十八):六月一波三折的英语
  9. NVIDIA教你用TensorRT加速深度学习推理计算 | 量子位线下沙龙笔记
  10. 亚马逊Alexa已接入2万种设备,22岁开发者月入1万美元