< * 블록 껍질(Convex Hull) * >
◆ 컨벡스 헐(Convex Hull))이란 차원 평면에 여러개의 점이 있을 때,
그 점 중 일부를 이어서 나머지 점을 내부에 포함할 수 있는 볼록 다각형을 만드는 알고리즘이다
◆ 윤곽선(points, contours)의 경계면을 둘러싸는 다각형을 구하는 알고리즘 이다.
◆ 반환되는 결과는 윤곽선 검출 결과와 동일한 형식으로 보이며,
스크랜스키(Sklansky) 알고리즘을 이용해 입력된 좌표들의 볼록한 외곽을 찾는다.
----< 예제 : (Convex_Hull.py >-------------------------------------------------------------------
import cv2
src = cv2.imread("Image/convex.png")
dst = src.copy()
gray = cv2.cvtColor(src, cv2.COLOR_RGB2GRAY)
ret, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_NONE)
for i in contours:
hull = cv2.convexHull(i, clockwise=True)
cv2.drawContours(dst, [hull], 0, (0, 0, 255), 2)
cv2.imshow("dst", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
--------------------------------------------------------------------------------------------------------
▶ for i in contours:
hull = cv2.convexHull(i, clockwise=True)
cv2.drawContours(dst, [hull], 0, (0, 0, 255), 2)
• cv2.convexHull()를 활용해 윤곽선에서 블록 껍질을 검출한다.
• cv2.convexHull(윤곽선, 방향)을 의미한다.
• 윤곽선은 윤곽선 검출 함수에서 반환되는 구조를 사용한다.
• 방향은 검출된 볼록 껍질의 볼록점들의 인덱스 순서를 의미한다.
• 블록 껍질 함수는 단일 형태에서만 검출이 가능하다.
-- 반복문을 활용해 단일 형태의 윤곽선 구조에서 블록 껍질을 검출한다.