본문 바로가기

딥러닝(Deep Learning)/OpenCV-Python

cv.CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE(Feat. findContours() )

findContours()의 세 번째 인자 : 경계선을 표현하는 방식

cv.CHAIN_APPROX_NONE

등고선(Edge)을 표현할 때 근사화를 하지 않고, 모든 좌표를 포함하여 표현하는 방법입니다.

이 방법을 사용하면 등고선 상의 모든 픽셀 좌표가 유지되며, 등고선(Edge)이 구성되는 모든 픽셀이 포함됩니다.

4x4 크기의 정사각형의 Edge Map

1로 표시된 모든 좌표를 반환을 한다. 

 

4x4 크기의 정사각형의 Edge Map

 

cv.CHAIN_APPROX_SIMPLE

등고선(Edge)의 일부 중요한 포인트만을 선택하여 표현하게 되어 메모리 사용을 줄이고 계산 효율성을 높입니다.

예를 들어, 이 등고선(Edge)을 근사화하여 표현하는 좌표 리스트는

[(0,0), (3,3), (3,1), (3,3)]와 같이 등고선을 대표하는 중요한 포인트만을 포함하고 있게 됩니다.

(정사각형의 네 개의 꼭지점의 좌표만이 반환된다)

왼쪽이 NONE이고, 오른쪽이 SIMPLE이다.

https://bkshin.tistory.com/entry/OpenCV-22-%EC%BB%A8%ED%88%AC%EC%96%B4Contour

 

OpenCV - 22. 컨투어(Contour)

이번 포스팅에서는 영상 분할 방법 중 하나인 컨투어에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunS

bkshin.tistory.com

위 사이트를 참조하면, 여러 종류의 경계선(Contour)를 그리는 방법론이 나오니 꼭 참조하자!(아래에 위 사이트에 나와 있는 예시 그림들을 나열하였다.)

 

Countour 예시 1
Countour 예시 2(번개를 다양한 방법으로 감싸봄)
Countour 예시 3
Countour 예시 4

왼쪽의 별 모양 도형과 가장 유사한 도형을 오른쪽 세 도형 중 찾는 코드입니다.

매칭 정도를 숫자로 표현했고 (숫자가 작을수록 서로 닮은 도형임) 가장 닮은 도형 주위에 초록색 컨투어를 그려주었습니다.