关于 Python opencv 使用中的 ValueError: too many values to unpack


Posted in Python onJune 28, 2019

最近在OpenCV-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓。

根据网上的 教程,Python OpenCV的轮廓提取函数会返回两个值,第一个为轮廓的点集,第二个是各层轮廓的索引。但是实际调用时我的程序报错了,错误内容如下:too many values to unpack (expected 2)

其实是接受返回值不符,如果你仅仅使用一个变量a去接受返回值,调用len(a),你会发现长度为3,也就是说这个函数实际上返回了三个值

第一个,也是最坑爹的一个,它返回了你所处理的图像

第二个,正是我们要找的,轮廓的点集

第三个,各层轮廓的索引

使用方式如下:

import cv2 
 
img = cv2.imread('D:\\test\\contour.jpg') 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY) 
 
contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 
cv2.drawContours(img,contours,-1,(0,0,255),3) 
 
cv2.imshow("img", img) 
cv2.waitKey(0)

运行时出现错误: ValueError: too many values to unpack

原因:由于版本(使用的时3.2.0.7)问题 cv.findContours返回值个数发生变化,变为3个。因此应该为

aa, ctrs, hier = cv2.findContours(im_th.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

假如第一个参数不使用,可写成

_, ctrs, hier = cv2.findContours(im_th.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

拓展:

ValueError: too many values to unpack 类错误,多为输入或者输出参数数量不一致导致。

参考:

其实是接受返回值不符,如果你仅仅使用一个变量a去接受返回值,调用len(a),你会发现长度为3,也就是说这个函数实际上返回了三个值

第一个,也是最坑爹的一个,它返回了你所处理的图像

第二个,正是我们要找的,轮廓的点集

第三个,各层轮廓的索引

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python转码问题的解决方法
Oct 07 Python
在python的WEB框架Flask中使用多个配置文件的解决方法
Apr 18 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
Python简单过滤字母和数字的方法小结
Jan 09 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
numpy下的flatten()函数用法详解
May 27 Python
django form和field具体方法和属性说明
Jul 09 Python
Python如何将模块打包并发布
Aug 30 Python
python中二分查找法的实现方法
Dec 06 Python
Python获取指定日期是"星期几"的6种方法
Mar 13 Python
python识别图像并提取文字的实现方法
Jun 28 #Python
python3射线法判断点是否在多边形内
Jun 28 #Python
python opencv 批量改变图片的尺寸大小的方法
Jun 28 #Python
python如何实现代码检查
Jun 28 #Python
python射线法判断一个点在图形区域内外
Jun 28 #Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 #Python
如何使用Python 打印各种三角形
Jun 28 #Python
You might like
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
python复制文件代码实现
2013/12/23 Python
Python实现提取文章摘要的方法
2015/04/21 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
Python 装饰器使用详解
2017/07/29 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
Python中join函数简单代码示例
2018/01/09 Python
python 编码规范整理
2018/05/05 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
Python爬虫教程知识点总结
2020/10/19 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
软件工程师面试题
2012/06/25 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
中专生毕业自我鉴定
2013/11/01 职场文书
销售副总经理岗位职责
2013/12/11 职场文书
上学迟到的检讨书
2014/01/11 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
预备党员公开承诺书
2014/05/28 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
php TP5框架生成二维码链接
2021/04/01 PHP