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

运行OpenCV摄像头动检代码遇cv2.findContours解包ValueError求助

问题原因

这个报错是OpenCV版本迭代导致的cv2.findContours接口返回值变更引发的:

  • OpenCV 3.x 版本中,cv2.findContours返回3个值,顺序为 处理后的图像, 轮廓列表, 层级信息,你原来的(_,cnts,_)写法是适配这个版本的
  • OpenCV 4.x 及以上版本中,接口取消了第一个返回值,仅返回 轮廓列表, 层级信息 两个值,所以你用3个变量接收就会触发「值不够解包」的错误
修复方案
  1. 把报错的那一行代码替换为如下内容即可:
cnts, _ = cv2.findContours(thresh_frame.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
  1. 额外补充一个代码疏漏:你代码末尾的cv2.destroyAllWindows漏了调用括号,改成cv2.destroyAllWindows()才能正常销毁所有预览窗口。

修改完成后运行即可正常弹出四个预览窗口,实现动态检测功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:39:02