【问题标题】:How to filter a single column mat with Gaussian in OpenCV如何在 OpenCV 中使用高斯过滤单列垫
【发布时间】:2014-01-01 22:37:56
【问题描述】:

我的垫子只有一列和 1600 行。我想用高斯过滤它。

我尝试了以下方法:

Mat AFilt=Mat(palm_contour.size(),1,CV_32F);
GaussianBlur(A,AFilt,cv::Size(20,1),3);

但我在 AFilt(过滤后的垫子)和 A 中得到完全相同的值。看起来 GaussianBlur 什么也没做。

这里有什么问题?如何使用高斯核平滑单列垫?

我阅读了有关 BaseColumnFilt 的信息,但没有看到任何使用示例,因此我不确定如何使用它们。

如果我没有任何线索,我们将不胜感激。

我正在使用 Visual Studio 2012 在 Windows 8 上使用 OpenCV 2.4.5。

谢谢

吉尔。

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    您只有一列,但您将高斯的宽度指定为大而不是指定高度! OpenCV 根据上下文使用 row,col 或 x,y 表示法。一般规则是,无论何时使用 Point 或 Size,它们的行为类似于 x,y,而只要参数是单独的值,它们的行为类似于 row,col。

    内核大小也应该是奇数。如果您指定内核大小,您可以将 sigma 设置为零,让 OpenCV 计算合适的 sigma 值。

    总而言之,这应该会更好:

    GaussianBlur(A,AFilt,cv::Size(1,21),0);
    

    【讨论】:

    • 感谢您的回答!
    【解决方案2】:

    GaussianBlur 的文档说内核大小一定是奇数,我会尝试使用奇数大小的内核,看看是否有什么不同

    【讨论】:

    • 感谢您的回答!
    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 2014-10-11
    • 2015-09-29
    • 1970-01-01
    相关资源
    最近更新 更多