2

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

  1. 将浮点 Mat 转换为 CV_8U 。显示时的 CV_8U 图像(浮动 Mat 中为 0 的点显示为黑色):

    浮动垫到图像

  2. 通过检查 4 邻域中的至少一个当前像素为零的非零像素来生成掩码。掩码描述要重建的像素(255 个缺失像素,否则为 0)掩码是:

面具

  1. 使用步骤 1 中获得的图像和步骤 2 中的掩码的修复函数。修复结果:

修复结果

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

4

1 回答 1

0

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

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

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

于 2013-02-22T16:46:11.963 回答