关于 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通过pil模块获得图片exif信息的方法
Mar 16 Python
给Python初学者的一些编程技巧
Apr 03 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
Python使用email模块对邮件进行编码和解码的实例教程
Jul 01 Python
Python实现注册、登录小程序功能
Sep 21 Python
pandas ix &iloc &loc的区别
Jan 10 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
简单了解Python matplotlib线的属性
Jun 29 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Django后台管理系统的图文使用教学
Jan 20 Python
Python基于Opencv识别两张相似图片
Apr 25 Python
方法汇总:Python 安装第三方库常用
Apr 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
层叠菜单的动态生成
2006/10/09 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
php限制文件下载速度的代码
2015/10/20 PHP
CI框架附属类用法分析
2018/12/26 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Python下简易的单例模式详解
2019/04/08 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
python字符串反转的四种方法详解
2019/12/02 Python
Python数据正态性检验实现过程
2020/04/18 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
pymysql模块使用简介与示例
2020/11/17 Python
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
初三化学教学反思
2014/01/23 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
党员自评材料范文
2014/12/17 职场文书
事业单位考察材料范文
2014/12/25 职场文书
2015年度信用社工作总结
2015/05/04 职场文书