关于 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-基础-入门 简介
Aug 09 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
windows下numpy下载与安装图文教程
Apr 02 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 Python
Python如何实现强制数据类型转换
Nov 22 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
一些关于python 装饰器的个人理解
Aug 31 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
python+openCV对视频进行截取的实现
Nov 27 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/12/05 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
Angular实现form自动布局
2016/01/28 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
Python显示进度条的方法
2014/09/20 Python
常见的python正则用法实例讲解
2016/06/21 Python
python实现各进制转换的总结大全
2017/06/18 Python
python 调用c语言函数的方法
2017/09/29 Python
python内存动态分配过程详解
2019/07/15 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
.net C#面试题
2012/08/28 面试题
幼儿园三八妇女节活动方案
2014/03/11 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
Node.js实现断点续传
2021/06/23 Javascript
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python