Skip to content

Cv2.minAreaRect

입력된 2D 점 세트(Contour)를 둘러싸는 최소 영역의 회전된 "직사각형"을 찾습니다.

이 함수는 지정된 점 세트에 대한 최소 면적 경계 직사각형(회전 가능)을 계산하고 반환합니다.

개발자는 데이터가 포함된 Mat 요소 경계("Mat element boundary")에 가까울 때 반환된 RotatedRect에 음수 인덱스가 포함될 수 있다는 점을 명심해야 합니다.1 <- 뭔말?

Return Value

((CenterX, CenterY), (Width, Height), AngleOfRotation) = cv2.minAreaRect(points)

Angle of Rotation

Cv2_minAreaRect_sample_.gif

사각형 꼭지점 Index 추적을 위해선 Nearest neighbor search 방법을 사용해야 한다.

사각형 추론 문제점

정확한 사각형 모양이 아니라. 꼭지점 부근이 살짝 기울어졌다면 다음과 같이 직사각형이 아닌 마름모꼴로 잡게된다.

53-20240229_091836-preview.png
54-20240229_091840-preview.png

허프 변환을 사용하여 보완한 알고리즘 MinAreaQuadrilateral을 사용하여 해결함. ddrm 프로젝트에 적용.

그리고 회전을 추적하기 위한 QuadrilateralRotateTracer 알고리즘 사용.

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 - 회전된 두 직사각형 사이에 교차점이 있는지 확인합니다.

See also

  • MinAreaQuadrilateral - cv2.minAreaRect 의 문제점 허프 변환을 사용하여 보완한 알고리즘 (ddrm에서 사용).
  • QuadrilateralRotateTracer - 사변형(Quadrilateral) 회전 추적기 (ddrm에서 사용).

Favorite site

References


  1. 원문은 "Developer should keep in mind that the returned RotatedRect can contain negative indices when data is close to the containing Mat element boundary." 이다.