Error using cv2.findContours(), with python

匿名 (未验证) 提交于 2019-12-03 02:30:02

问题:

I've recently started learning OpenCV on Python.

I'm referring to this tutorial here, to get some help on getting the contours of an image.

My code is -

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

The first thresholded image is appearing, but after that I get an error message as

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

Any help to resolve this issue will be appreciated.

回答1:

Look at this example.

cv2.findContours(...) 

only returns two objects, you're trying to unpack it into three.

change that line to this:

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

and it should work.



回答2:

The tutorial you have linked is for OpenCV version 3. cv2.findContours does return 3 objects in that version.

So either update opencv or use the solution by @will .



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!