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保存一个双矩阵的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 例程300篇02. 图像的保存(cv2.imwrite)
OpenCV 函数学习02-图像的保存(cv2.imwrite)