Skip to content

Cv2.findContours

외곽선을 검출한다.

OpenCV Contours APIs

  • Contours
  • OpenCV:Contours
  • cv2.approxPolyDP - 지정된 정밀도로 다각형 곡선을 근사화(단순화)합니다.
  • cv2.arcLength - 윤곽 둘레 또는 곡선 길이를 계산합니다.
  • cv2.boundingRect - 점 집합의 오른쪽 위 경계 사각형 또는 회색조 이미지의 0이 아닌 픽셀을 계산합니다.
  • cv2.boxPoints - 회전된 직사각형의 꼭지점 4개를 찾습니다. 회전된 직사각형을 그리는 데 유용합니다.
  • cv2.connectedComponents - 부울 이미지의 이미지 라벨이 붙은 연결된 구성요소를 계산합니다.
  • cv2.connectedComponentsWithStats - 부울 이미지의 이미지로 표시된 연결된 구성 요소를 계산하고 각 레이블에 대한 통계 출력도 생성합니다.
  • cv2.contourArea - 등고선 면적을 계산합니다.
  • cv2.convexHull - 점 세트의 볼록 껍질을 찾습니다.
  • cv2.convexityDefects - 윤곽선의 볼록성 결함을 찾습니다.
  • cv2.createGeneralizedHoughBallard - cv2.GeneralizedHoughBallard 클래스에 대한 스마트 포인터를 생성하고 초기화합니다.
  • cv2.createGeneralizedHoughGuil - cv2.GeneralizedHoughGuil 클래스에 대한 스마트 포인터를 생성하고 초기화합니다.
  • cv2.drawContours - 윤곽선을 그린다.
  • cv2.findContours - 바이너리 이미지에서 윤곽선을 찾습니다.
  • cv2.fitEllipse - 2D 점 세트 주위에 타원을 맞춥니다.
  • cv2.fitEllipseAMS - 2D 점 세트 주위에 타원을 맞춥니다.
  • cv2.fitEllipseDirect - 2D 점 세트 주위에 타원을 맞춥니다.
  • cv2.fitLine - 선을 2D 또는 3D 점 세트에 맞춥니다.
  • cv2.HuMoments - 7개의 Hu 불변값을 계산합니다.
  • cv2.intersectConvexConvex - 두 개의 볼록 다각형의 교차점을 찾습니다.
  • cv2.isContourConvex - 윤곽 볼록성을 테스트합니다.
  • cv2.matchShapes - 두 모양을 비교합니다.
  • cv2.minAreaRect - 입력 2D 점 세트를 둘러싸는 최소 영역의 회전된 직사각형을 찾습니다.
  • cv2.minEnclosingCircle - 2D 점 세트를 둘러싸는 최소 면적의 원을 찾습니다.
  • cv2.minEnclosingTriangle - 2D 점 세트를 둘러싸는 최소 면적의 삼각형을 찾아 해당 면적을 반환합니다.
  • cv2.moments - 다각형 또는 래스터화된 모양의 3차까지의 모든 모멘트를 계산합니다.
  • cv2.pointPolygonTest - 윤곽선 내 점 테스트를 수행합니다.
  • cv2.rotatedRectangleIntersection - 회전된 두 직사각형 사이에 교차점이 있는지 확인합니다.

Parameters

mode
어떤종류의 외곽선을 찾을것인가 또는 어떻게 결과를 표현할 것인가를 알려주는 용도로 사용된다.
  • CV_RETR_EXTERNAL - 가장 바깥쪽에 나타나는 외곽선들만 검출한다.
  • CV_RETR_LIST - 모든 외곽선을 검색하고 리스트에 넣는다.
  • CV_RETR_CCOMP - 모든 외곽선을 검색하고 이를 두개의 계층으로 나누어 관리한다. (구성요소들의 바깥쪽 외곽선들을 연결 리스트로 관리하고, 두번째 계층에서는 구성 요소들의 안쪽 외곽선을 리스트로 관리한다.)
  • CV_RETR_TREE - 모든 외곽선들을 검색하여 외곽선들의 전체 계층구조를 생성한다.
method
외곽선을 어떻게 근사화 할것인지 알려준다
  • CV_CHAIN_CODE - 프리만 체인코드를 생성한다.
  • CV_CHAIN_APPROX_NONE - 체인 코드의 모든 점을 꼭지점으로 변환한다.
  • CV_CHAIN_APPROX_SIMPLE - 수평, 수직, 대각 성분의 끝점만 저장한다.
  • CV_CHAIN_APPROX_TC89_L1, CV_CHAIN_APPROX_TC89_KCOS - Teh-Chin의 체인 근사화 알고리즘 중 하나를 적용한다.
  • CV_LINK_RUNS - ??

Example

import cv2

# 이미지를 그레이스케일로 읽어들입니다.
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# 이미지를 이진화합니다.
ret, thresh = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)

# 윤곽선을 찾습니다.
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# 찾은 윤곽선을 이미지에 그립니다.
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)

# 결과 이미지를 출력합니다.
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

See also

Favorite site