2017-10-09 5 views
0

Ich versuche, eine OpenCV-Tutorial zu bekommen, und ich verwende den bereitgestellten Quellcode. I laufen in diesen Fehler:Python OpenCV: ValueError: zu viele Werte zum Entpacken

Datei "C: \ XXX \ xxxxxxx \ Desktop \ basischem Bewegungabfragung \ motion_detector.py", Zeile 61, in cv2.CHAIN_APPROX_SIMPLE) Valueerror: zu viele Werte entpacken. Hier

ist der Code:

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

Mögliche Duplikat [OpenCV Python: Valueerror: zu viele Werte entpacken] (https://stackoverflow.com/questions/25504964/opencv-python -valueerror-too-many-values-to-unpack) –

+0

Sieht so aus, als ob Sie OpenCV 3.x verwenden (nächstes Mal, bitte geben Sie die Version an), schreiben Sie jedoch Code für 2.x. Ein Teil der API hat sich geändert. Im Zweifelsfall können Sie immer ['help'] (https://docs.python.org/2/library/functions.html#help) verwenden. –

+1

Siehe auch https://stackoverflow.com/questions/20851365/opencv-contours-need-more-than-2-values-to-unpack, wo der Benutzer das gegenteilige Problem hatte. –

Antwort

0

findContours kehrt drei Dinge, und geben Sie an, nur zwei in (cnts, _)

auspacken Wenn Sie daran interessiert sind nur in der ersten sind:

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

Das Problem ist, dass Sie cv2 Version 3 verwenden, und nicht Version 2, der Code ist für Version 2. Um nur Ihr Problem zu lösen Ändern Sie diese Zeile

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

hierfür:

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