关于 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 20 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
python实现汉诺塔算法
Mar 01 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
python实现倒计时小工具
Jul 29 Python
python创建属于自己的单词词库 便于背单词
Jul 30 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 Python
Python如何配置环境变量详解
May 18 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 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 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
PHP实现八皇后算法
2019/05/06 PHP
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
JS高级技巧(简洁版)
2018/07/29 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
django中嵌套的try-except实例
2020/05/21 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
考试违纪检讨书
2014/02/02 职场文书
家长对学生的评语
2014/04/18 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript