You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Python OpenCV findContours报错「值不足(预期3个,得到2个)」

OpenCV findContours报错解决方案

问题根源

这个报错是OpenCV大版本的接口差异导致的:教学视频使用的是OpenCV 3.x版本,你本地安装的是OpenCV 4.x版本,二者cv2.findContours的返回值数量不匹配:

  • OpenCV 3.x版本返回3个值,顺序为处理后图像、轮廓列表、层次结构,所以3个变量解包的写法_, contours,_= cv2.findContours(...)可正常运行
  • OpenCV 4.x版本移除了第一个返回值,仅返回轮廓列表、层次结构2个值,用3个变量解包就会抛出参数数量不匹配的错误

解决方案

你可以任选以下任意一种方式修改代码即可解决:

方案1:适配当前OpenCV 4.x版本

直接修改报错行的解包变量数量:

# 把原来的_, contours,_= ...改成下面的写法
contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

方案2:兼容所有OpenCV版本

如果需要代码同时兼容3.x和4.x版本,可以直接取返回值的倒数第二个元素,固定为轮廓列表:

contours = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[-2]

其他注意事项

你注释中写的cv2.PETER_TREE是参数拼写错误,正确的轮廓检索模式参数为cv2.RETR_TREE,修改时注意不要写错。
这个问题和opencv-contrib扩展包无关,安装contrib包无法解决该问题。

内容的提问来源于stack exchange,提问作者Mohammed Radman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 23:06:02