#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;在路上,但它不起作用。如果我得到任何领导,我会很高兴。谢谢!
答案 0 :(得分:3)
这没有明确记录,但imwrite
返回一个布尔值true
当且仅当它认为它可以成功写入文件时。你应该检查一下这个值!
您可能会发现imwrite
返回false
。很可能你没有足够的权限,或者 - 正如berak指出的那样 - 你的文件路径无效。
顺便说一句,为了正确处理错误,您还应该捕获异常,特别是如果用户提供输出文件URL。如果OpenCV由于某种原因无法找到合适的编码器(即它无法识别您要编写的文件类型),则会抛出异常。
答案 1 :(得分:0)
马库斯·梅尔(Markus Mayr)的回答帮助我发现,打印打印结果时,我得到的是假的。原来的原因是,我尝试写入的目录不存在。我以为它将创建目录,但写入默默失败。在手动创建目录后,它起作用了