在cv2.findContours函数使用中,报ValueError: not enough values to unpack (expected 3, got 2)

news/2024/11/15 3:41:05/

cv2.findContours()函数

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])  

其中
第一个参数是需要寻找轮廓的图像;
第二个参数是轮廓的检索模式,有四种方式:

  • cv2.RETR_EXTERNAL表示只检测外轮廓
  • cv2.RETR_LIST检测的轮廓不建立等级关系
  • cv2.RETR_LIST检测的轮廓不建立等级关系
  • cv2.RETR_TREE建立一个等级树结构的轮廓;

这四种方法一个一个尝试,看一下哪种方法比较合适项目要求
第三个参数method为轮廓的近似办法,有三种方法:

  • cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1;
  • cv2.CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息;
  • cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法。

在使用cv2.findContours()函数来查找检测物体的轮廓,根据网络上的教程复制以下代码:

image,cnts,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

运行报了以下错误:

image,contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
ValueError: not enough values to unpack (expected 3, got 2)

看了python cv2.findContours()函数,发现这是因为opencv版本的问题
我查看配置环境的opencv版本,版本为4.5.5

import cv2
print(cv2.__version__)

对于opencv3会返回三个值,分别是img, countours, hierarchy,而对于注:opencv4会返回两个值,分别是countours, hierarchy
因此,对于上面错的错误,我解决方法如下:

contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

http://www.ppmy.cn/news/325378.html

相关文章

cv2.cv2.findContours opencv-python

cv2.findContours用于轮廓检测,其输入为二值图像 输入: 有三个输入参数:输入图像(二值图像),轮廓检索方式,轮廓近似方法 轮廓检索方式 mode 含义 cv2.RETR_EXTERNAL 只检测外轮廓信息 cv2.RETR…

python-opencv2利用cv2.findContours()函数来查找检测物体的轮廓

版权声明:本文为CSDN博主「hjxu2016」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/hjxu2016/article/details/77833336 轮廓检测 轮廓检测也是图像处理中经常用到的…

cv2.threshold()、cv2.findContours(),cv2.findContours图片轮廓处理

参数及含义cv2.threshold threshold(src, thresh, maxval, type[, dst]) -> retval, dst,第一个返回值是**阈值**的float型,第二个返回值是图片像素处理后的结果。cv2.threshold(img,threshold,maxval,type) img:必须是灰度图,是8-bit或3…

cv2.findContours() 图像的轮廓

cv2.findContours(image, mode, method, contoursNone, hierarchyNone, offsetNone)参数: image:寻找轮廓的图像,注意输入的图片必须为二值图片。若输入的图片为彩色图片,必须先进行灰度化和二值化 mode:轮廓的检索模…

cv2.findcontours返回值

cv2.findContours() 函数返回值是三个参数: contours:图像轮廓的列表,其中每个轮廓是一个 Numpy 数组,包含该轮廓上的所有点的坐标。 hierarchy:图像中各轮廓的层次关系的信息,表示轮廓的父轮廓、子轮廓和兄…

opencv(13):cv2.findContours、cv::findContours简要介绍及opencv各版本cv2.findContours函数说明

目录 1. findContours函数 1.1. 轮廓contours 1.2 cv2.findContours、cv::findContours函数简介 1.3 参数说明: 2. opencv各版本cv2.findContours说明 2.1 opencv3.x 2.2 opencv2.x和4.x 3 cv2.findContours使用示例: 3.1 opencv3.x版本 4.…

cv2.findContours()函数

整理一下cv2.findContours()函数使用的相关注意事项。 示例代码: image,contours,hierarchy cv2.findContours(contour,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 输入: contour:带有轮廓信息的图像; cv2.RETR_TREE&#xff1a…

cv2.findContours()函数用法

opencv中 cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]]) → image, contours, hierarchy image-寻找轮廓的图像; mode-轮廓的检索模式: cv2.RETR_EXTERNAL表示只检测外轮廓 cv2.RETR_LIST检测的轮廓不建立等级关…