OpenCV版本差异所引发的cv2.findContours()函数传参问题

python开发:OpenCV版本差异所引发的cv2.findContours()函数传参问题

一、如遇以下问题:

错误信息:
ValueError: not enough values to unpack (expected 3, got 2)
值错误:没有足够的值解包(应为3,得到2)

二、解决问题:

1.降级(或升级)OpenCV:

pip3 install opencv-python==3.V
注释:接收三参数(image,contours, hierarchy)

pip3 install opencv-python==4.V
注释:接收两参数(contours, hierarchy)

2.版本差异:

OpenCV2和OpenCV4中:

    findContours这个轮廓提取函数会返回两个值:

    1) 轮廓的点集(contours)

    2) 各层轮廓的索引(hierarchy)

OpenCV3中:

  则会返回三个值:

  1) 处理的图像(image)

  2) 轮廓的点集(contours)

  3) 各层轮廓的索引(hierarchy)

三、cv2.findContours()相关参数

  1. 参数:

  1)第一个参数:

       寻找轮廓的图像

  2)第二个参数表示轮廓的检索模式,有四种:

      cv2.RETR_EXTERNAL     只检测外轮廓

      cv2.RETR_LIST         检测的轮廓不建立等级关系

      cv2.RETR_CCOMP        建立两个等级的轮廓,上面的一层为外边界,里面的一  层为内孔的边界信息

      cv2.RETR_TREE         建立一个等级树结构的轮廓


  3)第三个参数method为轮廓的近似办法:

      cv2.CHAIN_APPROX_SIMPLE     压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标(矩形只需四顶点) 

      cv2.CHAIN_APPROX_TC89_L1    使用teh-Chinl chain 近似算法 

      CV_CHAIN_APPROX_TC89_KCOS   使用teh-Chinl chain 近似算法

      cv2.CHAIN_APPROX_NONE       存储所有的轮廓点,相邻的两个点的像素位置差不超过1 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。