Skip to content

Cv2.minAreaRect

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

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

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

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. Blog.naver.com_-garden2040-_cupy_tutorial.pdf 

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