关于 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中xrange用法分析
Apr 15 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
pygame游戏之旅 添加游戏界面按键图形
Nov 20 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
python默认参数调用方法解析
Feb 09 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
Python sorted对list和dict排序
Jun 09 Python
Python的控制结构之For、While、If循环问题
Jun 30 Python
django序列化时使用外键的真实值操作
Jul 15 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间隔一段时间执行代码的方法
2014/12/02 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
原生js二级联动效果
2017/06/20 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
node.js的Express服务器基本使用教程
2019/01/09 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
Python实现备份文件实例
2014/09/16 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
Python向excel中写入数据的方法
2019/05/05 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
python实现超市商品销售管理系统
2019/11/22 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
教师推荐信范文
2013/11/24 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
婚宴父母致辞
2015/07/27 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python