相关代码在这里(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);
为什么两个图像在调整大小之前和之后如此不同?如何解决?
最佳答案
问题出在 copyTo
方法中。它不会清除“gesture_grey”图像容器的内容。
当您使用 gesture_grey(rec)
时,您实际上是在执行复制构造函数,这会为您提供一个新的图像容器,所以这一切都很酷。但是,当您调用 copyTo
时,您正在复制到现有目标“gesture_grey”。
要修复它,您需要在调用 copyTo
之前重新初始化 'gesture_grey' 以清除它。否则,您看到的是“gesture_grey”之前的内容 + 您从 image_grey
复制的新内容的组合。
关于c++ - 在 cv::resize() 之后图像奇怪地改变了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42696123/