imwrite不会创建图像

时间:2014-07-08 06:25:30

标签: 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;
}

&#39; imwrite&#34;在上面的代码中没有创建图像。其他一切工作正常,我可以使用imshow看到图像。但我不知道为什么它不是创建一个图像。我尝试过转换为&#39;并取代&#39; /&#39;到&#39; \&#39;在路上,但它不起作用。如果我得到任何领导,我会很高兴。谢谢!

2 个答案:

答案 0 :(得分:3)

这没有明确记录,但imwrite返回一个布尔值true当且仅当它认为它可以成功写入文件时。你应该检查一下这个值!

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

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

答案 1 :(得分:0)

马库斯·梅尔(Markus Mayr)的回答帮助我发现,打印打印结果时,我得到的是假的。原来的原因是,我尝试写入的目录不存在。我以为它将创建目录,但写入默默失败。在手动创建目录后,它起作用了