【发布时间】:2015-03-31 04:20:16
【问题描述】:
opencv imwrite 在我的 C++ 代码中打印出奇怪的黑色(ish)图像。读取图像然后打印出来的示例代码如下:
#include "iostream"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace std;
int main()
{
cv::Mat input_image = cv::imread("input_image.tiff",0);
cv::imwrite("output_image.tiff",input_image);
return 0;
}
我编译为g++ -std=c++11 main.cc -o bin `pkg-config --cflags --libs opencv`
输入图像和输出图像如下(应该相同):
输入图像 输出图像
图像被正确读取,因为我通过访问不同的像素值对其进行了检查。因此问题出在 imwrite 中。
额外信息:代码一开始运行良好,但突然改变了它的行为,重新安装 opencv 及其库没有帮助。
谁能告诉我这里出了什么问题,
谢谢
【问题讨论】:
-
首先确保您读取的输入图像是正确的。在窗口中显示它。即 namedWindow("temp",input_image);也可以尝试保存为其他格式,例如 BMP..
-
那是完整的代码吗?看起来有点像您使用 findContours (修改输入图像!)。
-
是的,这是完整的代码。目标是查看 imwrite 是否有效。是的,它的工作方式就像我在所有情况下都运行 findContours 一样。这在 SUSE 更新后开始发生,所以我想知道这是否是 openCV 更新中的错误