关于 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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
Python正则表达式匹配ip地址实例
Oct 09 Python
Python随机生成信用卡卡号的实现方法
May 14 Python
Python处理JSON数据并生成条形图
Aug 05 Python
Python基于OpenCV实现视频的人脸检测
Jan 23 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
详解python播放音频的三种方法
Sep 23 Python
keras tensorflow 实现在python下多进程运行
Feb 06 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
Django权限控制的使用
Jan 07 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 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作为Shell脚本语言使用
2006/10/09 PHP
人大复印资料处理程序_查询篇
2006/10/09 PHP
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
JQuery球队选择实例
2015/05/18 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
python实现决策树
2017/12/21 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
女方婚礼新郎答谢词
2014/01/11 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
三峡导游词
2015/01/31 职场文书
辩护词格式
2015/05/22 职场文书
法律意见书范文
2015/06/04 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android