Opencv for python(19)モーメントによる形状マッチング

1154 ワード

関数cv 2.matchShape()は、2つの形状または輪郭の類似度を比較するのに役立ちます.戻り値が小さいほど一致します.Huモーメントに基づいて計算した.Huモーメントは,スケーリング,回転,ミラーマッピングのようないくつかの変化に対して変形しない,画像のある特徴を表すモーメント関数を得るために正規化された中心モーメントの線形結合である.
import cv2
import numpy as np

img1 = cv2.imread('t1_re.png',0)
img2 = cv2.imread('t1_re2.png',0)
img3 = cv2.imread('t1_.png',0)

ret,thresh = cv2.threshold(img1,127,255,0)
ret2,thresh2 = cv2.threshold(img2,127,255,0)
ret3,thresh3 = cv2.threshold(img3,127,255,0)
contours,hierarchy = cv2.findContours(thresh,2,1)
cnt1 = contours[0]
contours2,hierarchy2 = cv2.findContours(thresh2,2,1)
cnt2 = contours2[0]
contours3,hierarchy3 = cv2.findContours(thresh3,2,1)
cnt3 = contours3[0]

ret = cv2.matchShapes(cnt1,cnt2,1,0.0)
ret1 = cv2.matchShapes(cnt1,cnt3,1,0.0)
ret2 = cv2.matchShapes(cnt1,cnt1,1,0.0)

print ret,ret1,ret2