Python开发:OpenCV版本差异所引发的cv2.findContours()函数传参问题
一、问题如下:
cv2.findContours()这个方法是用来找出轮廓值的:
但是在运行时,我所使用的opencv-python4.1.0.25则报错:
错误信息:
ValueError: not enough values to unpack (expected 3, got 2)
值错误:没有足够的值解包(应为3,得到2)
二、问题解决:
1、降级(或升级)OpenCV:
我在python中安装的第三方库是OpenCV4.1.0.25,所以这里要降级处理:
使用pip将版本降为3.4.3.18。
降级之后,PyCharm中可以看到现在的版本号:
(如果是OpenCV2则要升级到OpenCV3)
2、解析差异:
OpenCV2和OpenCV4中:
findContours这个轮廓提取函数会返回两个值:
①轮廓的点集(contours)
②各层轮廓的索引(hierarchy)
OpenCV3中:
则会返回三个值:
①处理的图像(image)
②轮廓的点集(contours)
③各层轮廓的索引(hierarchy)
三、cv2.findContours()相关:
1、参数:
①第一个参数:
寻找轮廓的图像 |
②第二个参数表示轮廓的检索模式,有四种:
cv2.RETR_EXTERNAL | 只检测外轮廓 |
cv2.RETR_LIST | 检测的轮廓不建立等级关系 |
cv2.RETR_CCOMP | 建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息 |
cv2.RETR_TREE | 建立一个等级树结构的轮廓 |
③第三个参数method为轮廓的近似办法:
cv2.CHAIN_APPROX_SIMPLE | 压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标(矩形只需四顶点) |
cv2.CHAIN_APPROX_TC89_L1 | 使用teh-Chinl chain 近似算法 |
CV_CHAIN_APPROX_TC89_KCOS | |
cv2.CHAIN_APPROX_NONE | 存储所有的轮廓点,相邻的两个点的像素位置差不超过1 |
__EOF__

本文作者:我命倾尘
本文链接:https://www.cnblogs.com/guobin-/p/10842486.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/guobin-/p/10842486.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?