간단한 기하학적 모양을 감지하는 Java 응용 프로그램을 프로그래밍하고 있습니다.OpenCV [Java]를 사용하여 간단한 기하학적 모양 검출
다음 파이썬 코드가 기준으로 사용됩니다 How to detect simple geometric shapes using OpenCV
이 코드의 일부는 [파이썬]입니다 :
contours,h = cv2.findContours(thresholdedImage,1,2)
for cnt in contours:
approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True)
print len(approx)
if len(approx)==5:
print "pentagon"
cv2.drawContours(img,[cnt],0,255,-1)
elif len(approx)==3:
print "triangle"
cv2.drawContours(img,[cnt],0,(0,255,0),-1)
elif len(approx)==4:
print "square"
cv2.drawContours(img,[cnt],0,(0,0,255),-1)
elif len(approx) == 9:
print "half-circle"
cv2.drawContours(img,[cnt],0,(255,255,0),-1)
elif len(approx) > 15:
print "circle"
cv2.drawContours(img,[cnt],0,(0,255,255),-1)
자바의 OpenCV의 방법을 사용하여, 나는 "은을 추출 할 수 없어요 len "(길이) 속성 (어떤 모양이 감지되었는지 확인하기 위해) 대략적인 윤곽선입니다.
윤곽의 몇 [자바] 생산하고 밖으로 인쇄 :
[ 4*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x23ac75f0, dataAddr=0x1c7c66c0 ]
[ 5*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x23ac7200, dataAddr=0x1c0e5fc0 ]
etc.
내가 특정 윤곽 객체의 점의 수를 좀하고 싶습니다 - 위의 코드에서 4
및 5
을.
문자열로 변환 한 다음 숫자를 추출 할 수 있다는 것을 알고 있지만 더 좋은 방법이 있어야합니다. 맞습니까?
답장을 보내 주셔서 감사합니다.
'len'은 단순히'approx' 배열에있는 원소의 수를 얻는 것입니다. 점/선 또는 기타의 '길이'를 계산하지 않습니다. Java에서'.length'와 같습니다. 그래서 그것은 단지 "삼각형이 삼각형이고, 삼각형이 다섯 개인 경우"라고 말하는 것입니다. –