OpenCV 비전 실무13장 · Shape 분석과 ROI 처리20 / 21← 이전목차다음 →MetaContents

13장. Shape 분석과 ROI 처리

정리

모양 특징, 분류 규칙, 관심 영역의 세 칸으로 13장을 요약한 인포그래픽
  • 모양 숫자는 12장의 윤곽선에서 시작합니다. 크기와 색이 같아도 꼭짓점 수, 원형도, 종횡비, 채움 비율, 볼록 비율로 모양을 가립니다.
  • cv2.approxPolyDP(윤곽선, 비율 × 둘레, True) 로 꼭짓점을 셉니다. 도형 판에서 비율 0.01 은 원 12개, 팔각형 8개로 둘을 갈랐고, 0.02 에서는 원도 8개가 되어 팔각형과 섞였습니다.
  • 원형도는 4π×넓이 ÷ 둘레² 로, 원이 1, 정사각형이 π/4 ≈ 0.785, 정삼각형이 약 0.605 입니다. 그림 속에서는 칸의 계단 때문에 원이 0.872 로 팔각형(0.948)보다 작게 재어졌습니다.
  • 종횡비(가로 ÷ 세로)와 채움 비율(넓이 ÷ 상자 넓이)은 boundingRect 로 잽니다. 기운 물체는 채움 비율이 떨어지므로 minAreaRect 로 잽니다. 볼록 비율(넓이 ÷ 볼록 껍질 넓이)은 움푹한 모양에서 작아집니다.
  • 특징을 표로 모아 확실한 질문부터 if 로 차례로 물으면 모양 이름을 붙일 수 있습니다. 도형 판에서는 8개를 모두 맞혔지만 0.3배로 줄인 그림에서는 3개만 맞혀 작은 물체에 약했고, 표지판 프로젝트는 비율 0.01 에서 8개, 0.02 에서 6개를 맞혔습니다.
  • 사각형 ROI 는 img[y:y+h, x:x+w] 이고 원본을 보는 창입니다. 원본을 지키려면 .copy() 를, 여백을 붙일 때는 max(0, ...), min(크기, ...) 나 np.clip 으로 그림 안에 묶습니다.
  • 모양 ROI 는 마스크(cv2.circle, cv2.fillPoly, cv2.drawContours 두께 -1)와 cv2.bitwise_and 로 만듭니다. ROI 만 처리해 원본 쪽 슬라이싱에 대입하면 그 자리만 바뀝니다. 기하 변환으로 기운 물체를 바로 세우는 일은 14장에서 합니다.
← 이전 절13장 · 프로젝트 1 — 교통 표지판 모양 분류기다음 절 →13장 · 확인문제와 해답