问题:
有两个mat对象:mat_1和mat_2将mat_2赋值给mat_1(mat_1 = mat_2)后,改变mat_1,mat_2也会被改变(这里的改变是指图像处理)。
问题原因:
mat_1 = mat_2是浅拷贝,他们虽然不同的矩阵头,但却共享内存空间。以至于改变其中一个,另一个也会被改变。
问题解决:
mat_1 = mat_2.clone();
问题本质是指针之间的赋值
两个指向int类型变量的指针:int* p; int * q; p = q是将两个q指向INT类型变量的地址赋值给p,p、q指向同一地址,所以改变q,p也会被改变。
这是C ++类对象的浅拷贝和深拷贝详细解释
https://blog.youkuaiyun.com/liuxiao2030/article/details/53760495 点击打开链接
本文探讨了在图像处理中使用OpenCV时遇到的浅拷贝问题,即两个mat对象之间的赋值操作导致的意外修改现象。通过具体实例说明了浅拷贝的工作原理,并给出了使用深拷贝解决问题的方法。
770

被折叠的 条评论
为什么被折叠?



