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

OpenCV-Python调用cv2.boundingRect获取轮廓外接矩形报错如何解决

报错根因
  • cv2.boundingRect要求传入单个轮廓的numpy点集,而cv2.findContours返回的contours是存储所有轮廓的列表,列表不能直接作为该函数的入参,因此触发参数类型错误。
代码修复

将原代码中绘制外接矩形的片段替换为以下内容:

contours = cv2.findContours(thresh1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0]
print(len(contours))
# 遍历所有轮廓分别计算外接矩形
for cnt in contours:
    # 过滤小面积噪点,可根据实际情况调整阈值
    if cv2.contourArea(cnt) < 30:
        continue
    x,y,w,h = cv2.boundingRect(cnt)
    cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
额外优化建议
  • 删掉首次循环转灰度的冗余逻辑,将占位黑图修改为和摄像头输出同尺寸的单通道图像,避免后续出现维度不匹配问题:
    把black = np.zeros((512,512,3), np.uint8)改为black = np.zeros((480,640), np.uint8),或在首次读取到frame后再初始化black,匹配实际摄像头分辨率。
  • 可删除循环开头的wait(0.5),改为通过cv2.waitKey控制画面停留时间,避免画面卡顿。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:06:04