关于 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爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
面向初学者的Python编辑器Mu
Oct 08 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
基于FME使用Python过程图解
May 13 Python
为什么是 Python -m
Jun 19 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 Python
详解PyTorch模型保存与加载
Apr 28 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树的代码,可以嵌套任意层
2006/10/09 PHP
php 小乘法表实现代码
2009/07/16 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
sina的lightbox效果。
2007/01/09 Javascript
记录几个javascript有关的小细节
2007/04/02 Javascript
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
js利用appendChild对标签进行排序的实现方法
2016/10/16 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
Python实现多并发访问网站功能示例
2017/06/19 Python
Python 函数基础知识汇总
2018/03/09 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
百度软件工程师职位
2013/02/14 面试题
学生打架检讨书
2014/02/14 职场文书
关爱留守儿童标语
2014/06/18 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
Redis命令处理过程源码解析
2022/02/12 Redis