关于 Python opencv 使用中的 ValueError: too many values to unpack

作者:Lecol_leng 时间:2023-07-26 23:46:36 

最近在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 类错误,多为输入或者输出参数数量不一致导致。

参考:

https://www.jb51.net/article/132200.htm

其实是接受返回值不符,如果你仅仅使用一个变量a去接受返回值,调用len(a),你会发现长度为3,也就是说这个函数实际上返回了三个值

第一个,也是最坑爹的一个,它返回了你所处理的图像

第二个,正是我们要找的,轮廓的点集

第三个,各层轮廓的索引

来源:https://blog.csdn.net/jjddss/article/details/72674704

标签:opencv,ValueError
0
投稿

猜你喜欢

  • 利用d3.js实现蜂巢图表带动画效果

    2024-04-18 10:15:19
  • Python中利用原始套接字进行网络编程的示例

    2023-06-22 18:02:03
  • Vue中使用Teleport的方法示例

    2024-05-09 15:13:19
  • pyqt5 QProgressBar清空进度条的实例

    2022-11-28 03:04:08
  • 不要犯WEB字体编辑的10种错误

    2008-08-19 12:55:00
  • python的pyecharts绘制各种图表详细(附代码)

    2021-12-29 16:51:13
  • mysql中取字符串中的数字的语句

    2024-01-15 02:16:15
  • Python与Appium实现手机APP自动化测试的示例代码

    2023-07-26 05:06:07
  • go实现服务优雅关闭的示例

    2023-08-06 09:01:08
  • SQLPlus命令操作用法详解

    2024-01-27 23:00:18
  • python分批定量读取文件内容,输出到不同文件中的方法

    2021-10-05 21:29:30
  • 详解Angular 中 ngOnInit 和 constructor 使用场景

    2024-05-11 09:18:05
  • ASP中利用正则表达式实现论坛UBB代码转换

    2008-02-29 11:49:00
  • Go语言通过WaitGroup实现控制并发的示例详解

    2023-06-29 01:04:27
  • python如何进行矩阵运算

    2021-05-01 22:58:25
  • javascript DOM实用学习资料第1/3页

    2024-04-25 13:09:44
  • C# 连接本地数据库的实现示例

    2024-01-23 09:35:15
  • python采用django框架实现支付宝即时到帐接口

    2023-07-16 00:15:33
  • 基于PyQt5制作一个群发邮件工具

    2022-09-04 01:46:46
  • Python 绘图和可视化详细介绍

    2021-02-16 18:17:31
  • asp之家 网络编程 m.aspxhome.com