Comparação momentos Hu
Tentei comparar duas imagens e usar o momento Hu para comparar o contorno extraído dessas imagens:https://docs.google.com/file/d/0ByS6Z5WRz-h2WHEzNnJucDlRR2s/edit ehttps://docs.google.com/file/d/0ByS6Z5WRz-h2VnZyVWRRWEFva0k/edit A segunda imagem é igual à primeira só é rodada e eu esperava como resultado os mesmos Humoments. Eles são um pouco diferentes.
Humoments assinar à direita (primeira imagem):
[[ 6.82589151e-01]
[ 2.06816713e-01]
[ 1.09088295e-01]
[ 5.30020870e-03]
[ -5.85888607e-05]
[ -6.85171823e-04]
[ -1.13181280e-04]]
Humoments assinar à direita (segunda imagem):
[[ 6.71793060e-01]
[ 1.97521128e-01]
[ 9.15619847e-02]
[ 9.60179567e-03]
[ -2.44655863e-04]
[ -2.68791106e-03]
[ -1.45592441e-04]]
Neste vídeo:http://www.youtube.com/watch?v=O-hCEXi3ymU no 4º minuto eu observei que ele obteve exatamente o mesmo. Onde eu estou errado?
Aqui está meu código:
nomeimg = "Sassatelli 1984 ruotato.jpg"
#nomeimg = "Sassatelli 1984 n. 165 mod1.jpg"
img = cv2.imread(nomeimg)
gray = cv2.imread(nomeimg,0)
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(4,4))
imgbnbin = thresh
imgbnbin = cv2.dilate(imgbnbin, element)
#find contour
contours,hierarchy=cv2.findContours(imgbnbin,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
#Elimination small contours
Areacontours = list()
area = cv2.contourArea(contours[i])
if (area > 90 ):
Areacontours.append(contours[i])
contours = Areacontours
print('found objects')
print(len(contours))
#contorus[3] for sing in first image
#contours[0] for sign in second image
print("humoments")
mom = cv2.moments(contours[0])
Humoments = cv2.HuMoments(mom)
print(Humoments)