📅  最后修改于: 2023-12-03 14:48:16.005000             🧑  作者: Mango
在Python中,当我们使用OpenCV库中的findContours函数将图像转换为边缘时,有时会遇到“ValueError:需要超过2个值来解压”错误。这个错误通常是由于没有正确传递参数所引起的。
下面是一个例子,展示了如何使用findContours函数并导致错误:
import cv2
img = cv2.imread('example.png', 0)
contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
当我们运行上面的代码时,会出现以下错误消息:
ValueError: not enough values to unpack (expected 3, got 2)
错误消息表明findContours函数期望返回3个值,但是只返回了2个。在这个函数中,第二个参数是层次结构,第三个参数是轮廓逼近方法。当我们传递了两个参数时,函数会在第三个参数中使用默认值,因此返回只有2个值的元组。这将导致Python抛出ValueError。
要解决这个错误,我们需要确保我们传递了正确的参数数量。在此例中,我们需要传递三个参数。如果我们不想使用第三个参数,并且希望使用默认值,我们可以像下面这样显式地提供一个None参数:
import cv2
img = cv2.imread('example.png', 0)
contours, hierarchy, _ = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
通过这样做,我们告诉Python将返回的第三个值存储在空变量“_”中,从而避免了ValueError异常。