关于 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 07 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
Jul 02 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
May 24 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
python取代netcat过程分析
Feb 10 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
python 删除非空文件夹的实例
Apr 26 Python
python让列表倒序输出的实例
Jun 25 Python
Python GUI编程完整示例
Apr 04 Python
Django如何使用redis作为缓存
May 21 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
Elasticsearch 批量操作
Apr 19 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 网页过期时间的控制代码
2009/06/29 PHP
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
PHP学习 变量使用总结
2011/03/24 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
js精度溢出解决方案
2012/12/02 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
JS路由跳转的简单实现代码
2017/09/21 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
vue小白入门教程
2018/04/02 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
Python字符串替换实例分析
2015/05/11 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
django框架创建应用操作示例
2019/09/26 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
大学生求职自我评价
2014/01/16 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android