Error al usar cv2.findContours (), con python

Recientemente he empezado a aprender OpenCV en Python.

Me refiero a este tutorial aquí, para obtener ayuda para obtener los contornos de una imagen.

Mi código es –

import cv2 import numpy as np img = cv2.imread('shapes.jpg', 0) img = cv2.medianBlur(img, 5) thresh = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\ cv2.THRESH_BINARY,11,2) cv2.imshow('Thresh', thresh) cv2.waitKey(0) cv2.destroyAllWindows() image, contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(image, countours, -1, (0,255,0), 3) cv2.imshow('Contours', img) cv2.waitKey(0) cv2.destroyAllWindows() 

Aparece la primera imagen con umbral, pero después aparece un mensaje de error como

 Traceback (most recent call last): File "contours.py", line 21, in  image, contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) ValueError: need more than 2 values to unpack 

Cualquier ayuda para resolver este problema será apreciada.

Mira este ejemplo.

 cv2.findContours(...) 

Solo devuelve dos objetos, estás intentando descomprimirlo en tres.

cambia esa línea a esto:

 contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) 

y debería funcionar.

El tutorial que has vinculado es para OpenCV version 3 . cv2.findContours devuelve 3 objetos en esa versión.

Por lo tanto, actualice opencv o use la solución por @will.