팽창연산 예제

형태학 : 이미지의 경계와 골격을 추출하는 도구 (팽창연산, 침식연산, 열림연산 닫힌연산)



c++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *srcImage = cvLoadImage("D:/study/testImage2.jpg"-1);
    IplImage *rstImage1 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
    IplImage *rstImage2 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
 
 
    //형태학 : 이미지의 경계와 골격을 추출하는 도구 (팽창연산, 침식연산, 열림연산 닫힌연산)
    //팽창연산 : 물체의 크기를 확장하고 배경을 축소하는 역할
    //cvDilate(원본이미지, 결과이미지, 구조적요소, 연산횟수) : 팽창연산 수행
    //구조적요소 : 연산의 모양과 크기 결정 (기본값 : 3x3 사각형)
    cvDilate(srcImage, rstImage1, NULL3);    //3x3 사각형 구조적요소로 팽창연산 3회 수행
 
    //cvCreateStructuringElementEx(열의수, 행의수, 중심점x좌표, 중심점y좌표, 구조적요소 모양) : 구조적요소 정의 함수
    //구조적 요소 모양
    //CV_SHAPE_RECT : 사각형 구조적요소
    //CV_SHAPE_CROSS : 십자형 구조적요소
    //CV_SHAPE_ELLIPSE : 타원형 구조적요소
    //CV_SHAPE_CUSTOM : 사용자정의 구조적요소
    IplConvKernel *element = cvCreateStructuringElementEx(5522, CV_SHAPE_CROSS);
    cvDilate(srcImage, rstImage2, element, 3);    //5x5 십자형 구조적요소로 팽창연산 3회 수행
 
 
    cvNamedWindow("original", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("dilate", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("dilate2", CV_WINDOW_AUTOSIZE);
 
    cvShowImage("original", srcImage);
    cvShowImage("dilate", rstImage1);
    cvShowImage("dilate2", rstImage2);
 
    cvWaitKey(0);
 
    cvReleaseImage(&srcImage);
    cvReleaseImage(&rstImage1);
    cvReleaseImage(&rstImage2);
}
cs



결과



'IT > - 프로그래밍' 카테고리의 다른 글

OpenCV 침식연산, 팽창연산의 확장  (0) 2017.05.10
OpenCV 침식연산 예제  (0) 2017.05.04
Cocos 충돌여부 체크하기  (0) 2017.05.02
OpenCV 이미지 대칭하기  (0) 2017.05.01
OpenCV 이미지 회전하기  (0) 2017.04.30

+ Recent posts