이 이미지에 find_contour (opencv 모듈)을 적용하면 5 개의 객체 (기호 당 하나) 만 얻을 수 있습니다 : https://docs.google.com/file/d/0ByS6Z5WRz-h2WHEzNnJucDlRR2s/edit? 이제 64 개의 객체를 얻습니다.find_contour를 통해 부호 당 1 등고선을 얻고 cv2에서 Humoments를 검색하십시오.
그런 다음 다른 이미지와 비교해 보겠습니다. 지금은 같은 이미지를 조금 번역 해 보았습니다. 테스트 해보니 똑같습니다.
내 질문 나는 humoments를 적용하기 위해 단지 5 개의 물체만을 얻을 수 있습니까? 아니면 humoments를 계산할 다른 솔루션이 있을까요?
import cv2
im = cv2.imread('Sassatelli 1984 n. 165 mod1.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(imgray, (0,0), 5)
cv2.imshow('Blur', blur)
cv2.waitKey()
th = 20
edges = cv2.Canny(blur, th, th*3)
cv2.imshow('canny',edges)
cv2.waitKey()
contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
print('objects found')
print(len(contours))
cnt = contours[0]
cv2.drawContours(blur,contours,-1,(0,255,0),3)
cv2.imshow('draw contours',blur)
cv2.waitKey()
moments = cv2.moments(cnt)
답장을 보내 주셔서 감사합니다! 나는이 다른 3 이미지 png 형식으로 변환 된 시도하고 몇 가지 문제가 있습니다. 큰 원이있는 이미지는 2 개의 윤곽선 만 가져옵니다 (RETR_EXTERNAL을 선택했기 때문에 생각합니다). Veio 이미지 89 윤곽선과 마지막 16 윤곽선. https://docs.google.com/file/d/0ByS6Z5WRz-h2V2w4SFNXcVI5WFU/edit https://docs.google.com/file/d/0ByS6Z5WRz-h2cE1wTGJwRnE5YUU/edit https://docs.google.com/file/ d/0ByS6Z5WRz-h2bW9XTHU2TEtWSDA/edit – postgres
제 질문은이 경우에도 적응을 할 수 있는지 (많은 사진이 있습니다) 아니면 모든 이미지를 다른 방식으로 분석해야하는지입니다. 나는 당신에게 말했다. 왜냐하면 나는이 징후들을 비교하고 싶다. – postgres
이 이미지를 잊어 버렸습니다 : https://docs.google.com/file/d/0ByS6Z5WRz-h2UTFCaVEzaHlXRVk/edit. 36 개의 물체를 찾았고, 그래서 중요도가없는 작은 점들 (노이즈)을 발견했다고 생각합니다! – postgres