为什么一个图像结果会影响用原始图像创建的另一图像?
这是一个我面对上述问题的例子。
Mat src = imread ("A.jpg");
Mat src1 = src;
Mat src2 = src;
Process (src1);
imshow ("src1_result", src1);
imshow ("src2", src2);
注意:“src2”,显示src1和的结果,这是我的问题。 **为什么?。 另外,当我再次用原始图像设置src2时,如下所示。
src2 = src;
src2仍显示src1的结果。
为什么?,有人看到过这个问题吗?
最佳答案
当您执行src2 = src1
时,src2
并不是src1
的克隆,而只是指向包含src1
的像素值的相同存储位置。这只是出于优化目的而设计opencv的方式。
您实际上可以通过检查两个变量的.data
指针(指向像素值)来自己检查。在示例代码中,src1.data
和src2.data
将相同。
您只对src2 = src1.clone();
感兴趣,然后src1
和src2
是独立的。
关于c++ - 第二张Mat图像显示了第一张Mat图像的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36544248/