关于 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实现哈希表
Feb 07 Python
在Python中的Django框架中进行字符串翻译
Jul 27 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
python中闭包Closure函数作为返回值的方法示例
Dec 17 Python
python绘制简单彩虹图
Nov 19 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
Django MEDIA的配置及用法详解
Jul 25 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
详解Python3 pickle模块用法
Sep 16 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
python 模拟在天空中放风筝的示例代码
Apr 21 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生成xml时添加CDATA标签的方法
2014/10/17 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
JavaScript库 开发规则
2009/01/31 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
Vue formData实现图片上传
2019/08/20 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
python实现图片处理和特征提取详解
2017/11/13 Python
python ChainMap的使用和说明详解
2019/06/11 Python
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
一些Solaris面试题
2013/03/22 面试题
教育科学研究生自荐信
2013/10/09 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
班子四风对照检查材料
2014/08/21 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
父亲节寄语大全
2015/02/27 职场文书
工作年限证明模板
2015/06/15 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
Python代码实现双链表
2022/05/25 Python
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android