私は単純な幾何学的形状を検出するJavaアプリケーションをプログラミングしています。OpenCV [Java]を使って簡単な幾何学的形状を検出
次のPythonコードを基準として使用される:私は "を抽出することができないんだ
Javaの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)
、:How to detect simple geometric shapes using OpenCV
これは、コードの一部[Pythonの]であります(長さ)プロパティ(どの形状が検出されたかを判断するために)近似された輪郭のものです。輪郭のカップルをプリントアウト
は、[Javaの]生産: - 上記のコードから4
と5
[ 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.
私は特定の輪郭オブジェクトのポイント数を取得したいのですが。
私はそれを文字列に変換してから数値を抽出できることは分かっていますが、より良い方法が必要です。
返信いただきありがとうございます。
'len'は単に' approx'配列の要素数を取得していることに注意してください。ポイント/ラインなどの「長さ」を計算するのではありません。これはJavaの '.length'のようなものです。つまり、三角形が三角形、五角形が五角形などのようなものです。 –