ValueError: too many values to unpack

2025-11-04 09:54:12

1、python在进行轮廓处理时出现

ValueError: too many values to unpack (expected 2),

根据提示怀疑在进行轮廓处理时可能有问题

ValueError: too many values to unpack

2、在进一步观察上一步提示发现

File "D:/mywork/pythonn/xxx/opencv.py", line 25, in <module>

    contours,hierarchy = cv.findContours(BINARYImg, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)

这句和代码里cv.findContours(BINARYImg, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE) 是一致的。

基本定位问题点。

ValueError: too many values to unpack

3、检查findContours原型:

cvFindContours是从二值图像中检索轮廓,并返回检测到的轮廓的个数

这实际就是问题所在。误以为是两个返回函数!

继续百度

官网显示函数原型:

image, contours, hierarchy=cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]])

返回值是3个! 

ValueError: too many values to unpack

4、image, contours, hierarchy=cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]])

三个返回值的简单解释:

image: 返回处理的图像

contours:轮廓的点集

hierarchy:各层轮廓索引

ValueError: too many values to unpack

5、修改代码

ret,BINARYImg = cv.threshold(grayImg, 100, 255, cv.THRESH_BINARY)cv.imshow("BINARYImg", BINARYImg)

binary,contours,hierarchy = cv.findContours(BINARYImg, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)

cv.imshow("binary", binary)cv.waitKey(0)

比较两幅图

ValueError: too many values to unpack

ValueError: too many values to unpack

6、结论:

要注意findContours 返回的是三个参数!

返回值第一个是原来的二值图。

修改代码后,错误消失。能够正确计算轮廓点集!

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢