Image Contours
Contours란 동일한 색 또는 동일한 강도를 가지고 있는 영역의 경계선을 연결한 선입니다.
주의! OpenCV에서 Contour 찾기는 검정색 배경에서 흰색 물체를 찾는 것.
- 정확도를 높히기 위해서 Binary Image를 사용합니다. threshold나 canny edge를 선처리로 수행합니다.
cv2.findContours()
함수는 원본 이미지를 직접 수정하기 때문에, 원본 이미지를 보존 하려면 Copy해서 사용해야 합니다.- OpenCV에서는 contours를 찾는 것은 검은색 배경에서 하얀색 대상을 찾는 것과 비슷합니다. 그래서 대상은 흰색, 배경은 검은색으로 해야 합니다.
cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
- image – 8-bit single-channel image. binary image.
- mode - contours를 찾는 방법
cv2.RETR_EXTERNAL
: contours line중 가장 바같쪽 Line만 찾음.
cv2.RETR_LIST
: 모든 contours line을 찾지만, hierachy 관계를 구성하지 않음.cv2.RETR_CCOMP
: 모든 contours line을 찾으며, hieracy관계는 2-level로 구성함.
cv2.RETR_TREE
: 모든 contours line을 찾으며, 모든 hieracy관계를 구성함.- method – contours를 찾을 때 사용하는 근사치 방법
cv2.CHAIN_APPROX_NONE
: 모든 contours point를 저장.
cv2.CHAIN_APPROX_SIMPLE
: contours line을 그릴 수 있는 point 만 저장. (ex; 사각형이면 4개 point)cv2.CHAIN_APPROX_TC89_L1
: contours point를 찾는 algorithm
cv2.CHAIN_APPROX_TC89_KCOS
: contours point를 찾는 algorithm- Returns : image, contours , hierachy
cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]])
- image – 원본 이미지
- contours – contours정보. list로 들어가야 해
- contourIdx – contours list type에서 몇번째 contours line을 그릴 것인지. -1 이면 전체
- color – contours line color
- thickness – contours line의 두께. 음수이면 contours line의 내부를 채움.
'Python > Image vision' 카테고리의 다른 글
Morphological Transformations (0) | 2020.01.20 |
---|---|
Contour Feature (0) | 2020.01.20 |
Image Smoothing (0) | 2020.01.20 |
이미지 임계처리 (Thresholding) (0) | 2020.01.20 |
이미지 Processing (0) | 2020.01.20 |