我想在OpenCV中的浮点矩阵中重建缺失值。 Mat包含最小值为0的 float 值。
我尝试了这个:

  • 将浮点Mat转换为CV_8U。显示CV_8U图像时( float Mat中带0的点显示为黑色):

  • 通过检查4邻域中当前像素为零的至少一个非零像素来生成掩码。 遮罩描绘了要重构的像素(255个丢失像素,否则为0)。遮罩为:
  • inpaint function与在步骤1中获得的图像以及从步骤2中获得的蒙版一起使用。修复结果:

  • 现在,我在丢失的位置(在图像上方)有像素值,但是此修复不能直接应用于浮点Mat。它仅接受8位1通道或3通道图像。 如何在浮点Mat中重建/获取缺失值?

    最佳答案

    如果从float-uchar转换中丢失精度在整个图像中都是可以接受的,则可以执行以下操作:

    cv::Mat result;
    inpainted_image.convertTo(result, CV_32F);
    

    如果您只想填写缺失的值,请执行上述操作,然后在掩码为非零的情况下传输result值。

    关于opencv - 浮点矩阵OpenCV中缺少值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15018556/

    10-16 12:04