关于 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批量修改文件后缀的方法
Jan 26 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
python 队列详解及实例代码
Oct 18 Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 Python
Python切图九宫格的实现方法
Oct 10 Python
多个python文件调用logging模块报错误
Feb 12 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 Python
python scrapy简单模拟登录的代码分析
Jul 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
Python3标准库总结
2019/02/19 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python telnet登陆功能实现代码
2020/04/16 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
归元寺导游词
2015/02/06 职场文书
大学教师个人总结
2015/02/10 职场文书
教师读书笔记
2015/06/29 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS