Image Contours
Contours란 동일한 색 또는 동일한 강도를 가지고 있는 영역의 경계선을 연결한 선입니다. 우리가 자주 보는 것으로는 등고선이나 일기예보에서 볼 수 있습니다.
Categories
- Convex hull (컨벡스 헐) - 최외곽선 검출
- Hough transform (허프 변환) - 영상에 있는 점들이 이루는 직선들 중 가장 많이 겹치는 부분을 추출. 주로 선(Line) 이나 원(Circle) 따위를 감지할 때 사용.
- Canny edge detector (캐니 에지 검출기) - 외곽선 추출
- Contours (외곽선) - 이미지 경계선 추출.
Example
OpenCV의 cv2.findContours()
, cv2.drawContours()
함수를 사용하면 된다.
#-*- coding:utf-8 -*-
import cv2
import numpy as np
img = cv2.imread('images/rectangle.jpg')
imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#threshold를 이용하여 binary image로 변환
ret, thresh = cv2.threshold(imgray,127,255,0)
#contours는 point의 list형태. 예제에서는 사각형이 하나의 contours line을 구성하기 때문에 len(contours) = 1. 값은 사각형의 꼭지점 좌표.
#hierachy는 contours line의 계층 구조
image, contours, hierachy = cv2.findContours(thresh, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
image = cv2.drawContours(img, contours, -1, (0,255,0), 3)
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Hierarchy
- [추천] OpenCV - 22. 컨투어(Contour) - "트리 계층 컨투어"에 해당하는 hierarchy 결과 값에 대한 설명 있음.
See also
Favorite site
References
-
Datascienceschool_-_f9f8983941254a34bf0fee42c66c5539.ipynb.zip ↩