关于 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列表与元组详解实例
Nov 01 Python
python与php实现分割文件代码
Mar 06 Python
Python内置模块logging用法实例分析
Feb 12 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
Python面向对象之继承和组合用法实例分析
Aug 27 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Django中create和save方法的不同
Aug 13 Python
Django实现文件上传和下载功能
Oct 06 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
Python @property及getter setter原理详解
Mar 31 Python
python的Jenkins接口调用方式
May 12 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
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
Javascript中Eval函数的使用
2010/03/23 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
浅析Python中else语句块的使用技巧
2016/06/16 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
python获取服务器响应cookie的实例
2018/12/28 Python
Django ORM filter() 的运用详解
2020/05/14 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
Linux机考试题
2015/07/17 面试题
毕业生找工作的自我评价
2013/10/18 职场文书
高一家长会邀请函
2014/01/12 职场文书
文科教师毕业的自我评价
2014/01/16 职场文书
网络书店创业计划书
2014/02/07 职场文书
建筑工地大门标语
2014/06/18 职场文书
2014年教研员工作总结
2014/12/23 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
首次购房证明
2015/06/19 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python