Imwrite不创建图像

imwrite does not create image

本文关键字:图像 创建 Imwrite      更新时间:2023-10-16
#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返回一个布尔值,当且仅当它认为它可以成功写入文件时,该布尔值为true。您应该检查该值!

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

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

Markus Mayr的回复帮助我发现我在打印imwrite的结果时得到了一个错误。原因原来是,我要写的目录不存在。我假设它将创建目录,但imwrite静默失败。在我手动创建目录后,它工作了