2014-02-07 58 views
0

我有一个由double构成的矩阵(Mat),范围是[0,1]。 当我通过命令imwrite保存它时,生成的图像是全黑的。 我想这个问题是一个铸造问题,但我不知道如何解决它。 感谢Opencv:用imwrite保存双矩阵

+1

尝试'cv :: imwrite(filename,yourmatrix * 255)' 否则请查看http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite,因为有些文件扩展名只允许有限的数据类型。 – Micka

回答

1

你得到的全黑图像是因为所有的图像像素范围内[0,1](实际上为0或保存图像时,1),这是接近全黑(无论是灰度图像或彩色图像)。

要保存矩阵到的图像与正常颜色,必须先变换矩阵双由255每个值乘以范围[0, 255]。如果稍后通过将每个值除以255来加载此图像中的矩阵,请记住将其转换回来。

+1

我认为你必须做一个'convertTo(converted_Mat,CV_8U或CV_16U,255或65535)'也有类型适当的设置。 – mb84

1

OpenCV存储双精度数组而不将它们转换为其他格式(以及丢失信息)的唯一方法是使用FileStorageimwrite仅限于'char'或'short'的数组。