1

Ich schrieb den folgenden Code Konturen zu erkennen und zeichnen:Wie erkennen und zeichnen Sie Konturen mit OpenCV in Python?

img = cv2.imread('test2.tif'); 

if not img is None: 
    imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY); 
    ret,thresh = cv2.threshold(imgray,127,255,0); 
    contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE); 

    #draw a three pixel wide outline 
    cv2.drawContours(img,contours,-1,(0,255,0),3); 

Und hier ist der Fehler, den ich erhalten:

Traceback (most recent call last): File "C:/Users/R.K.singh/Desktop/Image processing/intro-to-contours.py", line 10, in contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE); ValueError: too many values to unpack

Was ist falsch? Ich verwende Python 2.7 und OpenCV 3.1.0

Antwort

2

Um Selchuks Punkt zu betonen, hat sich die Syntax von OpenCV 3.x ein wenig geändert. Es hat einen anderen Rückgabewert, wenn es um cv2.findContours geht. Es gibt folgende image, contours, hierarchy zurück.

Frühere Versionen von OpenCV jedoch nur contours, hierarchy zurückgegeben. Sie geben das Bild nicht zurück.

2

Ändern Sie die folgende Zeile. Sie verwenden OpenCV 3.1.0, aber Sie haben mit OpenCV 2.7.x codiert.

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

Auch diese link werden Ihnen helfen.

+0

was ist scharf? Es ist nicht in meinem Code definiert. @ selçuk-İlhan-aydi – singhuist

+1

Ich habe den Code bearbeitet –

Verwandte Themen