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

标签 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

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

最佳答案

问题出在 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/

相关文章:

c++ - OpenCV SVD 返回与 MATLAB 不同的结果

c++ - 如何在第一次出现 x(线性链表)C++ 后添加新元素 y

C++:如果我包含多个头文件,如果两者都有#include <string>,它会导致任何问题吗?

c++ - UDP 客户端未正确形成数据包

python - 如何使用opencv的cv2.putTexttext显示文字2秒?

opencv - icp变换矩阵解释

c++ - 使用宏的错误转换

c++:在数学错误而不是nan中创建实际错误

python - 如何使用 openCV 使用广角镜头正确校准我的相机?

ios - xcode 项目无法从框架中找到头文件