영상의 형태를 표현하는 일련의 실수값
특정 함수 집합과의 상관 관계(correlation) 형태로 계산
3차 이하의 정규화된 중심 모멘트를 조합하여 만든 7개의 모멘트 값
영상의 크기, 회전, 이동, 대칭 변환에 불변
cv2.matchShapes(contour1, contour2, method, parameter) -> retval
contour1: 첫 번째 외곽선 또는 그레이스케일 영상
contour2: 두 번째 외곽선 또는 그레이스케일 영상
method: 비교 방법 지정. cv2.CONTOURS_MATCH_I1, cv2.CONTOURS_MATCH_I2,
cv2.CONTOURS_MATCH_I3 중 하나 사용.
parameter: 사용되지 않음. 0 지정.
retval: 두 외곽선 또는 그레이스케일 영상 사이의 거리(distance)
Hu의 불변모멘트를 이용하여 두 외곽선 또는 영상의 모양을 비교
→ 크기, 회전, 이동, 대칭 변환에 강인
obj = cv2.imread('spades.png', cv2.IMREAD_GRAYSCALE)
src = cv2.imread('symbols.png', cv2.IMREAD_GRAYSCALE)
obj_contours, _ = cv2.findContours(obj_bin, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
obj_pts = obj_contours[0]
contours, _ = cv2.findContours(src_bin, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
dst = cv2.cvtColor(src, cv2.COLOR_GRAY2BGR)
for pts in contours:
rc = cv2.boundingRect(pts)
cv2.rectangle(dst, rc, (255, 0, 0), 1)
dist = cv2.matchShapes(obj_pts, pts, cv2.CONTOURS_MATCH_I3, 0)
if dist < 0.1:
cv2.rectangle(dst, rc, (0, 0, 255), 2)