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

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

【问题讨论】:

标签: c++ c opencv


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我认为您必须执行convertTo (converted_Mat , CV_8U or CV_16U , 255 or 65535) 才能设置正确的类型。
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多