【问题标题】:Filling zero-value elements of an OpenCV Mat填充 OpenCV Mat 的零值元素
【发布时间】:2021-10-07 10:22:12
【问题描述】:

我有Mat 对象,如下所示:

在这样的矩阵中,一些列被预定义(固定)数量的列插入,其中值全为零。

我正在寻找一个过滤器,用一些按列的线性插值填充那些零列。例如,之前的 Mat 最终会变成这样:

请注意,非零列的原始值不变。在此示例中,垫子尺寸为 3x7,但在我的应用程序中,实际尺寸通常比上述尺寸大,例如 300x400 或更大。

我自己编写了代码来做到这一点。但是,我想知道是否存在使用 OpenCV 的本机功能执行相同操作的简化方法。

【问题讨论】:

  • 我没有看到在 OpenCV 中执行此操作的准备好的功能。你可以实现一个算法来做到这一点,看起来你已经做到了。浮点数怎么样,比如 3.3, 2.7 ?你如何将浮点数嵌入到 Mat ?通过使用<float>map ?
  • @YunusTemurlenk 垫子是 CV_32FC1
  • 为什么不创建只有非零列的 Mat 并使用 resize 来处理插值?
  • @beaker 即使 INTER_LINEAR 获得的值并不完全相同,正如我所寻找的那样,我认为这种方法可以满足我的需求。

标签: python c++ opencv filtering interpolation


【解决方案1】:

如果您的零是特定模式中的列,您可以对非零值进行采样,然后调整大小(如 cmets 中所述):

cv2.resize(mat[:, 0::3], mat.shape)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2020-11-11
    • 2023-01-31
    • 1970-01-01
    相关资源
    最近更新 更多