MAT复制
来源:互联网 发布:java枚举的声明 编辑:程序博客网 时间:2024/06/06 18:28
OpenCV使用引用计数机制。其思路是让每个 Mat 对象有自己的信息头,但共享同一个矩阵。这通过让矩阵指针指向同一地址而实现。而拷贝构造函数则 只拷贝信息头和矩阵指针 ,而不拷贝矩阵。
以上代码中的所有Mat对象最终都指向同一个也是唯一一个数据矩阵。虽然它们的信息头不同,但通过任何一个对象所做的改变也会影响其它对象。实际上,不同的对象只是访问相同数据的不同途径而已。这里还要提及一个比较棒的功能:你可以创建只引用部分数据的信息头。比如想要创建一个感兴趣区域( ROI ),你只需要创建包含边界信息的信息头:
现在你也许会问,如果矩阵属于多个 Mat 对象,那么当不再需要它时谁来负责清理?简单的回答是:最后一个使用它的对象。通过引用计数机制来实现。无论什么时候有人拷贝了一个 Mat 对象的信息头,都会增加矩阵的引用次数;反之当一个头被释放之后,这个计数被减一;当计数值为零,矩阵会被清理。但某些时候你仍会想拷贝矩阵本身(不只是信息头和矩阵指针),这时可以使用函数 clone() 或者 copyTo() 。
现在改变 F 或者 G 就不会影响 Mat 信息头所指向的矩阵。总结一下,你需要记住的是
- OpenCV函数中输出图像的内存分配是自动完成的(如果不特别指定的话)。
- 使用OpenCV的C++接口时不需要考虑内存释放问题。
- 赋值运算符和拷贝构造函数( ctor )只拷贝信息头。
- 使用函数 clone() 或者 copyTo() 来拷贝一副图像的矩阵。
0 0
- MAT复制
- Mat 复制详解
- Mat行复制
- opencv Mat之间赋值(复制)
- cv::Mat 图像拷贝、复制的问题
- opencv Mat矩阵的“深浅”复制
- Mat图像的深浅复制区别
- opencv Mat&类型图像复制(P.S.CvArr*和Mat&转化的问题)
- opencv之图像mat复制copyTo,clone=
- 【opencv练习02-Mat的初始化、两种复制】
- C++智能指针,实现Mat类的复制控制
- OpenCv2 学习笔记(1) Mat创建、复制、释放
- OpenCV中构造Mat矩阵赋值和复制的…
- MAT
- MAT
- Mat
- MAT
- Mat
- TP-Link 设置
- 全文检索引擎Solr系列—–全文检索基本原理
- oc关键字解读
- 自驾遇险——专家教你十分钟换备胎
- linux指令学习方法
- MAT复制
- utf-8 utf-16对比windows系统下wchar_t和char中文字符的二进制对比
- css控制Button 按钮的点击时候出现蓝色边框
- HTML 的语法
- UncaughtExceptionHandler
- CI框架调用第三方类库
- ConcurrentLinkedQueue学习记
- spring 事务没有回滚与mysql数据库引擎
- ubuntu系统AndroidStudio修改内存大小