¿Cómo detectar y dibujar contornos utilizando OpenCV en Python?

Escribí el siguiente código para detectar y dibujar contornos:

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); 

Y aquí está el error que recibí:

Seguimiento (última llamada más reciente): archivo “C: / Users / RKsingh / Desktop / Image processing / intro-to-contours.py”, línea 10, en contornos, hierarchy = cv2.findContours (thresh, cv2.RETR_TREE, cv2 .CHAIN_APPROX_SIMPLE); ValueError: demasiados valores para descomprimir

¿Qué está mal? Estoy usando Python 2.7 y OpenCV 3.1.0

Para enfatizar el punto de Selchuk, la syntax de OpenCV 3.x ha cambiado un poco. Tiene un valor de retorno diferente cuando se trata de cv2.findContours . Devuelve la siguiente image, contours, hierarchy .

Las versiones anteriores de OpenCV, sin embargo, solo devuelven contours, hierarchy . No devuelven la imagen.

Cambia la siguiente línea. Está utilizando OpenCV 3.1.0 pero ha codificado utilizando OpenCV 2.7.x.

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

También este enlace te ayudará.