opencv中的低通滤波器

时间:2012-03-23 14:34:50

标签: image-processing opencv filtering

我想知道如何在IplImage上的opencv中执行低通滤波器。 例如“boxcar”或类似的东西。

我用谷歌搜索了它,但我找不到明确的解决方案。 如果有人能给我一个例子或指出我如何在opencv或javacv中实现这一点,我将不胜感激。

提前谢谢。

2 个答案:

答案 0 :(得分:4)

以下是使用C API和IplImage的示例:

#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/highgui/highgui_c.h"

int main()
{
    IplImage* img = cvLoadImage("input.jpg", 1);
    IplImage* dst=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3);
    cvSmooth(img, dst, CV_BLUR);
    cvSaveImage("filtered.jpg",dst);
}

有关cvSmooth函数的哪些参数的信息,您可以查看cvSmooth Documentation

如果您想使用自定义过滤器掩码,可以使用函数cvFilter2D

#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/highgui/highgui_c.h"

int main()
{
    IplImage* img = cvLoadImage("input.jpg", 1);
    IplImage* dst=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3);
    double a[9]={   1.0/9.0,1.0/9.0,1.0/9.0,
                    1.0/9.0,1.0/9.0,1.0/9.0,
                    1.0/9.0,1.0/9.0,1.0/9.0};
    CvMat k;
    cvInitMatHeader( &k, 3, 3, CV_64FC1, a );

    cvFilter2D( img ,dst, &k,cvPoint(-1,-1));
    cvSaveImage("filtered.jpg",dst);
}

这些示例使用OpenCV 2.3.1。

答案 1 :(得分:3)

openCV filtering文档有点令人困惑,因为函数尝试并有效地涵盖了所有可能的过滤技术。

tutorial使用您自己的过滤器内核,其中包含了框过滤器