фильтр низких частот в opencv - PullRequest
5 голосов
/ 23 марта 2012

Я хотел бы знать, как я могу сделать фильтр нижних частот в opencv на IplImage. Например "Вагон" или что-то подобное.

Я погуглил, но не могу найти четкого решения. Если бы кто-нибудь мог дать мне пример или указать правильное направление, как реализовать это в opencv или javacv, я был бы благодарен.

Спасибо заранее.

Ответы [ 2 ]

4 голосов
/ 23 марта 2012

Вот пример использования 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 .

Если вы хотите использовать настраиваемую маску фильтра, вы можете использовать функцию 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 голосов
/ 23 марта 2012

Документация openCV немного сбивает с толку, потому что функции пытаются и эффективно охватывают все возможные методы фильтрации.

Существует учебник по использованию ваших собственных ядер фильтров, который охватывает блочные фильтры

...