2016-03-19 14 views
0

私はラズベリーパイにOpenCVを使用し、Pythonでビルドしています。画像を閾値処理して輪郭を見つけて重心を見つけることによって、色を使ってオブジェクトを見つける単純なオブジェクトトラッカーを作成しようとしています。次のコードを使用すると、PythonでOpenCVを使ってfindContoursを使う

image=frame.array 
imgThresholded=cv2.inRange(image,lower,upper)  
_,contours,_=cv2.findContours(imgThresholded,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 
cnt=contours[0] 
Moments = cv2.moments(cnt) 
Area = cv2.contourArea(cnt) 

次のエラーが発生します。

Traceback (most recent call last): 
File "realtime.py", line 122, in <module> 
    cnt=contours[0] 
IndexError: list index out of range 

私はPiCameraを使用している他のいくつかの設定を試してみましたが、同じエラーまたは

ValueError: too many values to unpack 

を取得しました。重心位置を取得するための任意の提案?

おかげ

Z

答えて

1

エラー1:

Traceback (most recent call last): 
File "realtime.py", line 122, in <module> 
    cnt=contours[0] 
IndexError: list index out of range 

は、単にいつも正気を行うことが示唆されるようにcv2.findContours()方法は、与えられた画像中の任意の輪郭を発見していなかったことを意味し等高線にアクセスする前に確認してください。

if len(contours) > 0: 
    # Processing here. 
else: 
    print "Sorry No contour Found." 

エラー2

ValueError: too many values to unpack 

このエラーはcv2.findContoursリターンのみ2値、輪郭や階層以来、原因_,contours,_ = cv2.findContoursに上昇させ、それで、あなたはcv2.findContoursで返される2要素タプルから3つの値を展開しようとすると、明らかに、それは引き上げます上記のエラー。

またcv2.findContoursが所定の位置に入力マットを変更し、次のようにcv2.findContoursを呼び出すことが示唆されています

contours, hierarchy = cv2.findContours(imgThresholded.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 
if len(contours) > 0: 
    # Processing here. 
else: 
    print "Sorry No contour Found."