无法将Mat写入JPG或除BMP之外的任何其他图像格式的OpenCV / C ++

时间:2013-01-04 04:19:40

标签: c++ image-processing opencv

我无法使用函数imwrite将Mat写入图像文件。当我尝试将其写入BMP格式时,它工作正常,但在尝试写入其他格式时,它给了我一个未处理的异常。

        merge(yuv_channels,3,resImg);
        imshow("Result",resImg);
        imwrite("C:\\result.jpg",resImg);

以上代码是我保存为jpg的尝试。

        merge(yuv_channels,3,resImg);
        imshow("Result",resImg);
        imwrite("C:\\result.bmp",resImg);

当我将扩展名更改为bmp时,它工作正常。

非常感谢任何帮助。 谢谢。

1 个答案:

答案 0 :(得分:1)

resImg的内容可能格式不正确。在PNG,JPEG 2000和TIFF的情况下,只有16位无符号(CV_16U)。如果格式,深度或通道顺序不同,请使用Mat :: convertTo()和cvtColor()在保存之前进行转换。见http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite