Opencv:用imwrite保存一个双矩阵

Posted

技术标签:

【中文标题】Opencv:用imwrite保存一个双矩阵【英文标题】:Opencv: save a double matrix with imwrite 【发布时间】:2014-02-07 14:36:45 【问题描述】:

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

【问题讨论】:

试试cv::imwrite(filename, yourmatrix*255) 否则看看docs.opencv.org/modules/highgui/doc/…,因为某些文件扩展名只允许有限的数据类型。 【参考方案1】:

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

【讨论】:

【参考方案2】:

您得到全黑图像是因为所有图像像素都在[0,1] 范围内(保存到图像时实际上是 0 或 1),接近全黑(对于灰度图像或彩色图像)。

要将矩阵保存到具有正常颜色的图像中,首先需要通过将每个值乘以255,将双精度矩阵转换为范围[0, 255]。如果您稍后通过将每个值除以 255 来加载此图像中的矩阵,请记住进行转换。

【讨论】:

我认为您必须执行convertTo (converted_Mat , CV_8U or CV_16U , 255 or 65535) 才能设置正确的类型。

以上是关于Opencv:用imwrite保存一个双矩阵的主要内容,如果未能解决你的问题,请参考以下文章

day2 Opencv + image

OpenCV 例程300篇02. 图像的保存(cv2.imwrite)

OpenCV 函数学习02-图像的保存(cv2.imwrite)

OpenCV:如何使用 cv::imwrite 保存图像而不覆盖它们

OpenCV imwrite()不保存图像

OpenCV2.3 imwrite 保存黑色图像