关于 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中Genarator函数用法分析
Apr 08 Python
讲解Python中if语句的嵌套用法
May 14 Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
Python装饰器模式定义与用法分析
Aug 06 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
使用python进行广告点击率的预测的实现
Jul 04 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
Python安装依赖(包)模块方法详解
Feb 14 Python
python实现定时发送邮件
Dec 23 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 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
杏林同学录(三)
2006/10/09 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
python学习必备知识汇总
2017/09/08 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
校园创业策划书
2014/01/14 职场文书
高中打架检讨书
2014/02/13 职场文书
工作违纪检讨书
2014/02/17 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
教师专业自荐信
2014/05/31 职场文书
财产分割协议书范本
2014/11/03 职场文书