c++ - imwrite 不创建图像

标签 c++ opencv image-processing computer-vision

#include <opencv/cv.h>
#include <opencv/highgui.h>

using namespace cv;

int main( int argc, char** argv )
{
const char* imageName = "samp.png";

Mat image;
image = imread( imageName, 1 );


Mat gray_image;
cvtColor( image, gray_image, CV_BGR2GRAY );

imwrite( "/home/Downloads/Pictures/Gray_Image.jpg",gray_image );



namedWindow( imageName, CV_WINDOW_AUTOSIZE );
namedWindow( "Gray image", CV_WINDOW_AUTOSIZE );



imshow( imageName, image );
imshow( "Gray image", gray_image );

waitKey(0);

return 0;
}

上面代码中的“imwrite”不创建图像。其他一切正常,我可以使用 imshow 看到图像。但我不知道为什么它不创建图像。我试过“convertTo”并替换“/' 到路径中的 '\',但它不起作用。如果我能得到任何线索,我将很高兴。谢谢!

最佳答案

这没有清楚地记录下来,但是 imwrite 返回一个 bool 值,当且仅当它认为它可以成功写入文件时才为 true。您应该检查该值!

您可能会发现 imwrite 返回 false。很可能您没有足够的权限,或者——正如 berak 指出的那样——您的文件路径无效。

顺便说一句,为了正确处理错误,您还应该捕获异常,特别是在用户提供输出文件 URL 的情况下。如果 OpenCV 由于某种原因找不到合适的编码器(即它无法识别您要编写的文件类型),它会抛出异常。

关于c++ - imwrite 不创建图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24624995/

相关文章:

c++ - 为什么这个对模板的调用不模棱两可?

python - Ctypes:OSError:异常:堆栈溢出

linux - 通过 Rightscripts 安装 OpenCV 和 FFMPEG 时出错

OpenCV 4.x+ 需要启用 C++11 支持

opencv - 使用opencv将一个形状放在另一个形状内

image-processing - caffe通过python创建网络

c++ - 如何在QML中隐藏光标

c++ - 根据 Google C++ 风格指南初始化静态字符串(C 类型或 std::string)

opengl - 将 OpenGL 纹理转换为 OpenCV Mat

opencv - 如何从图像中去除类似光阴影的颜色