OpenCV python:ValueError:太多的值来解压缩

我正在写一个opencv程序,我发现另一个stackoverflow问题上的脚本: 计算机视觉:掩盖一个人的手

当我运行脚本答案时,出现以下错误:

Traceback (most recent call last): File "skinimagecontour.py", line 13, in <module> contours, _ = cv2.findContours(skin_ycrcb, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) ValueError: too many values to unpack 

代码:

 import sys import numpy import cv2 im = cv2.imread('Photos/test.jpg') im_ycrcb = cv2.cvtColor(im, cv2.COLOR_BGR2YCR_CB) skin_ycrcb_mint = numpy.array((0, 133, 77)) skin_ycrcb_maxt = numpy.array((255, 173, 127)) skin_ycrcb = cv2.inRange(im_ycrcb, skin_ycrcb_mint, skin_ycrcb_maxt) cv2.imwrite('Photos/output2.jpg', skin_ycrcb) # Second image contours, _ = cv2.findContours(skin_ycrcb, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for i, c in enumerate(contours): area = cv2.contourArea(c) if area > 1000: cv2.drawContours(im, contours, i, (255, 0, 0), 3) cv2.imwrite('Photos/output3.jpg', im) 

任何帮助表示赞赏!

我从OpenCV Stack Exchange站点得到了答案。 回答

答案:

我敢打赌,你正在使用目前的OpenCV的主分支:在这里返回语句已经改变,请参阅http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours

因此,将相应的行更改为:

 _, contours, _= cv2.findContours(skin_ycrcb, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 

或者:因为当前的主干仍然不稳定,你可能会遇到更多的问题,你可能想使用OpenCV当前的稳定版本2.4.9。

你必须改变这一行;

 image, contours, _ = cv2.findContours(skin_ycrcb, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)