OpenCV - 외곽선 추출(contour)




















OpenCV 로 외곽선을 추출하는 방법.

1. 알아야 할 사항.

위의 두 변수에 대해서 알아야한다. 왜?
안그러면 직접 일일이 노가다로 자료구조를 만들고 계산해야할지도...

이유 무관.

일단 중요한 내용은 요롷게만 올린다.

cvFindcontours() 함수를 사용하여서, 외곽선을 추출한다.
알아서 모든 외곽선을 추출하여 storage, contour 변수에 담아준다.

그리고 전부다 외곽선을 추출할 때는 주석을 단 저대로 하면 되지만,

문제는,, 영상(640*480) 사이즈의 크기도 구한다는 것. Why? 그것도 영역안이니, 외곽선으로 칠수밖에 없지요.

그래서 약간의 꽁수를 써야죠ㅎ

cvArcLength() 함수를 사용하여서 길이를 구한다음에 그 길이가 x 이하 일때는 그리지 않는다!

라고 조건을 주는겁니다.

그리고 cvDrawContours() 함수를 그대로 사용하면!? 네! 당연히 안되죠.

Learning OpenCV 책을 보면( 원서입니다. ㄷㄷ)
cvDrawContours5번째 파라미터 max_level, 값을 -1로 주면, 현재 contour 변수에 들어있는 외곽선만 draw 를 하게 됩니다.


일단 요까지~ 응용은 알아서^_^/

삽질...끝 ㄷㄷㄷ..




참고 하기
cvFindContours() 함수를 사용할 때
5번째 Parameter

#define CV_RETR_EXTERNAL 0 : 최 외부 외곽선만 추출
#define CV_RETR_LIST     1 : 모든 contour 를 찾아 한 list에 저장( hierachycal 구조가 아님)
#define CV_RETR_CCOMP    2 : 모든 contour 를 찾아 2-level 트리 구조로 구성. top 레벨은 외부 contour, second 레벨은 내부(contour(holes)
#define CV_RETR_TREE     3 : 모든 contour를 찾아 full hierachy 트리 구조로 구성


CVSeq*, CvMemStorage* 해제
cvClearSeq( CvSeq*);
cvReleaseMemStoarge( CvMemStorage** storage);


'Library > opencv' 카테고리의 다른 글

CvSeq  (0) 2010.11.10
Hand Tracking  (0) 2010.11.05
OpenCV - 영상화전 cvGetQuadrangleSubPix()  (0) 2010.11.05
Histogram Specification (히스토그램 명세화)  (0) 2010.04.15
호모그래피  (0) 2010.01.23

댓글

Designed by JB FACTORY