为什么一个图像结果会影响用原始图像创建的另一图像?

这是一个我面对上述问题的例子。

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.datasrc2.data将相同。

您只对src2 = src1.clone();感兴趣,然后src1src2是独立的。

关于c++ - 第二张Mat图像显示了第一张Mat图像的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36544248/

10-08 22:32