如何在 OpenCV 中使用高斯过滤单列垫

Posted

技术标签:

【中文标题】如何在 OpenCV 中使用高斯过滤单列垫【英文标题】:How to filter a single column mat with Gaussian in 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。

谢谢

吉尔。

【问题讨论】:

【参考方案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 的文档说内核大小一定是奇数,我会尝试使用奇数大小的内核,看看是否有什么不同

【讨论】:

感谢您的回答!

以上是关于如何在 OpenCV 中使用高斯过滤单列垫的主要内容,如果未能解决你的问题,请参考以下文章

高斯的拉普拉斯算子:它是如何工作的? (OpenCV)

如何使用 OpenCV 在 Python 中为图像添加噪声(高斯/盐和胡椒等)[重复]

openCV中高斯的拉普拉斯算子,如何找到零交叉?

java glReadpixels 到 OpenCV 垫

OpenCV垫损坏

Visual Studio 2010 OpenCV 多线程垫不复制到另一个垫