#include "cv.h"

#include "highgui.h"

 

void example2_4(IplImage* image) {

        cvNamedWindow("Example4-in");

        cvNamedWindow("Example4-out");

 

        cvShowImage("Example4-in", image);

 

        IplImage* out=cvCreateImage(  //결과이미지를 저장할 새로운 변수선언

               cvGetSize(image),      //크기

               IPL_DEPTH_8U,          //픽셀값을 저장할때 사용되는 자료형

               3                      //체널의 개수

        );

 

        cvSmooth(image, out, CV_GAUSSIAN, 3, 3);     //스무딩 연산

        cvShowImage("Example4-out", out);

        cvReleaseImage(&out);

 

        cvWaitKey(0);

        cvDestroyWindow("Example4-in");

        cvDestroyWindow("Example4-out");

}

 

int main(int argc, char** argv) {

        IplImage* img=cvLoadImage(argv[1]);

        example2_4(img);

        cvReleaseImage(&img);

        return 0;

}


cvCreateImage()

cvCreateImage() 함수를 이용하여 스무딩효과가 적용된 화면을 저장하기위한 IplImage형 포인터 변수 out을초기화한다.

cvCreateImage() 함수의 첫번째 인자로는 출력할 이미지의 크기, 두번째인자는 픽셀값이 저장할때 사용되는 자료형을 저장한다. 마지막인자로는 체널의 개수를 저장한다

※ 위의 예제에서 새로 생성된 이미지는 입력이미지와 크기가 같고, 부호없는 8비트자료형을 사용하고, 3개의 체널(한 체널당 8비트 할당)을 갖는다. 


cvSmooth()

스무딩 연산은 OpenCv의 cvSmooth()함수를 호출함으로써 수행된다. 매개변수를 통해 입력이미지와 출력이미지, 스무딩방법에 대한 매개변수가 전달된다. 

※ 예제에서는 3×3크기의 가우시안 커널을 씌워 스무딩을 수행한다.

Posted by No names
,