当前位置: 首页 > 面试题库 >

OpenCV python:ValueError:太多值无法解包

计光赫
2023-03-14
问题内容

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

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 StackExchange网站获得了答案。回答

答案:

我敢打赌,您正在使用当前的OpenCV的master分支:此处的return语句已更改,请参阅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。



 类似资料:
  • 问题内容: 我正在编写一个opencv程序,但在另一个stackoverflow问题上找到了一个脚本: 计算机视觉掩盖人的手 运行脚本化答案时,出现以下错误: 编码: 任何帮助表示赞赏! 问题答案: 您正在使用当前的OpenCV的master分支:return语句已更改,请参见 http://docs.opencv.org/trunk/modules/imgproc/doc/structural_

  • 问题内容: 我从这段代码中得到该异常: 这行是引发异常的行。该s为对象。有人有什么想法吗? 问题答案: 是一个,默认情况下,您仅迭代键(字符串)。 由于具有两个以上的键*,因此无法将它们解压到“ ”中,因此引发了异常。 在Python 2. x中 ,要遍历键和值(“ ”),我们使用。 但是,由于无论如何都将键扔掉了,因此还可以简单地遍历字典的值: 在Python 3. x中 ,preferred

  • 我试图运行我在网上找到的刮板,但收到一个ValueError:太多的值在这行代码上解包 这条线是这个函数的一部分 如果您有任何意见,我们将不胜感激,谢谢。

  • 代码: 错误: 准备好了,我得到了一个自动驾驶代码,当我使用代码提取数据时,我得到了一个像这样的错误,我不知道该做什么,确切地说,我的Python版本最新版本,谢谢提前

  • 问题内容: 我得到了错误。知道我该如何解决吗? 问题答案: Python 2 您需要使用。 请参阅此答案,以获取有关遍历字典的更多信息,例如跨python版本使用using 。 Python 3 由于 Python 3的 是不再支持。使用代替。

  • 问题内容: 在for循环中使用split会导致上述异常。但是,当从for循环中获取独立元素时,它可以工作: 一个解释将不胜感激-并且自然也为for循环版本的正确语法。 问题答案: 该环路期望的是,在迭代每个项目可以解压到两个变量。因此,在您的情况下,看起来像其中之一: 这些可迭代项中的每个项都可以分为和组件。在您的情况下,它们不能,因为的输出是具有两个以上字符的字符串列表: