在cv :: resize()之后图像奇怪地改变了

时间:2017-03-09 13:02:19

标签: c++ opencv

相关代码在这里(C ++,opencv):

Rect rec = boundingRect(...);
image_grey.copyTo(gesture_grey, mask);
imshow("image_grey", gesture_grey(rec));
resize(gesture_grey(rec), gesture_grey, Size(256, 256));
imshow("gesture_grey", gesture_grey);

imshow()的结果: enter image description here

为什么两个图像在调整大小之前和之后如此不同?如何解决?

1 个答案:

答案 0 :(得分:1)

问题出在copyTo方法中。它不会清除'gesture_grey'图像容器的内容。

当你使用gesture_grey(rec)时,你正在有效地执行复制构造函数,它会为你提供一个新的图像容器,所以它很酷。但是,当您致电copyTo时,您正在复制到现有目标'gesture_grey'。

要修复它,您需要在调用copyTo之前重新初始化'gesture_grey'以清除它。否则,您看到的是先前“gesture_grey”内容+您从image_grey复制的新内容的组合。