2017-10-09 8 views
0

OpenCVチュートリアルを試してみたいと私は提供されたソースコードを使用しています。私はこのエラーに遭遇:Python OpenCV:ValueError:アンパックする値が多すぎます

ファイル "C:\ XXX \ XXXXXXX \デスクトップ\基本的な動き検出の\ motion_detector.py"、61行、 cv2.CHAIN_APPROX_SIMPLE中) とValueError:解凍するためにあまりにも多くの値を。ここで

は、コードは次のとおりです。

# on thresholded image 
thresh = cv2.dilate(thresh, None, iterations=3) 
(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, 
    cv2.CHAIN_APPROX_SIMPLE)` 
+0

[OpenCVのパイソン:ValueErrorを:あまりにも多くの値を解凍する]の可能な重複(https://stackoverflow.com/questions/25504964/opencv-python -valueerror-too-many-values-unpack) –

+0

OpenCV 3.x(次回はバージョンを指定してください)のようですが、2.x用のコードを記述しています。一部のAPIが変更されました。不確かな場合は、いつでも['help'](https://docs.python.org/2/library/functions.html#help)を使用できます。 –

+1

また、ユーザーが反対の問題を抱えていたhttps://stackoverflow.com/questions/20851365/opencv-contours-need-more-than-2-values-to-unpackを参照してください。 –

答えて

0

findContoursは、3つのことを返し、あなただけが最初にのみ関心がある場合(cnts, _)

に解凍するために、2つの指定されています

# on thresholded image 
thresh = cv2.dilate(thresh, None, iterations=3) 
cnts, _, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)` 
0

問題は、バージョン2ではなくcv2バージョン3を使用していることです。コードはバージョン2用です。 問題のみを解決するにはこのために、このライン

(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, 
    cv2.CHAIN_APPROX_SIMPLE) 

を変更:

(_, cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, 
    cv2.CHAIN_APPROX_SIMPLE) 
関連する問題