2012-03-23 147 views
5

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

我用Google搜索了它,但我找不到明确的解决方案。 如果任何人都可以给我一个例子或指出我正确的方向如何在opencv或javacv中实现这一点,我将不胜感激。

Thx提前。

+0

我不知道究竟你的意思。低通常意味着低频...所以你是指色谱的某个末端? – thecoshman 2012-03-23 14:37:26

+1

欲了解更多信息:http://paulbourke.net/miscellaneous/imagefilter/ – Ojtwist 2012-03-23 15:05:20

回答

4

这里:

#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。

3

openCV filtering文档是有点混乱,因为该功能尝试efficently涵盖所有可能的过滤技术。

没有使用自己的过滤器内核一个tutorial使用C API和IplImage的一个例子覆盖盒形过滤器