如何在 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 中使用高斯过滤单列垫的主要内容,如果未能解决你的问题,请参考以下文章