2017-10-09 51 views
0

我想通过一个OpenCV教程,我使用提供的源代码。我遇到这个错误:Python OpenCV:ValueError:太多的值来解压

文件 “C:\ XXX \ XXXXXXX \桌面\基本的运动检测\ motion_detector.py” 61行,在 cv2.CHAIN_APPROX_SIMPLE) ValueError异常:值过多解压。

下面是代码:

# on thresholded image 
thresh = cv2.dilate(thresh, None, iterations=3) 
(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, 
    cv2.CHAIN_APPROX_SIMPLE)` 
+0

[OpenCV的蟒蛇:ValueError异常:值过多解压]的可能的复制(https://stackoverflow.com/questions/25504964/opencv-python -valueerror-too-many-values-to-unpack) –

+0

看起来你使用的是OpenCV 3.x(下一次,请指定版本),然后编写用于2.x的代码。一些API已经改变。如果有疑问,您可以随时使用['help'](https://docs.python.org/2/library/functions.html#help)。 –

+1

另请参阅https://stackoverflow.com/questions/20851365/opencv-contours-need-more-than-2-values-to-unpack,其中用户有相反的问题。 –

回答

0

findContours回报三件事情,你只指定两个解压到(cnts, _)

如果你只在第一个感兴趣的是:

# on thresholded image 
thresh = cv2.dilate(thresh, None, iterations=3) 
cnts, _, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)` 
0

问题是,您正在使用cv2版本3,而不是版本2,代码为版本2. 仅解决问题改变这一行

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

此:

(_, cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, 
    cv2.CHAIN_APPROX_SIMPLE) 
相关问题