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

实时摄像头手部角度检测遇TypeError:如何修复列表与整数比较问题?

解决手部角度检测中的TypeError问题

错误原因

报错源于代码中对列表与整数直接做大小比较:

area = [cv2.contourArea(c) for c in contours]  
if area < 3700 or 10000 < area :continue

area是存储所有轮廓面积的列表,Python不支持列表与整数用<运算符直接比较,因此触发TypeError: '<' not supported between instances of 'list' and 'int'。

同时原代码中cv2.minAreaRect(c)的c未定义,必须对应单个轮廓才能正常计算外接矩形。

修正后的代码片段

contours, hierarchy = cv2.findContours(fg_mask_bb,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)[-2:]

# 遍历每个轮廓,逐个处理面积与角度
for c in contours:
    area = cv2.contourArea(c)
    # 判断单个轮廓面积是否在有效区间内
    if area < 3700 or area > 10000:
        continue
    # 计算最小外接矩形
    rect = cv2.minAreaRect(c)
    box = cv2.boxPoints(rect)
    box = np.int0(box)
    center = (int(rect[0][0]), int(rect[0][1])) 
    width = int(rect[1][0])
    height = int(rect[1][1])
    angle = int(rect[2])

    # 调整角度计算逻辑
    if width < height:
        angle = 90 - angle
    else:
        angle = -angle

关键修正点

  • 将生成面积列表的逻辑改为遍历单个轮廓计算面积,确保每次判断的是单个整数类型的面积值
  • 将轮廓处理逻辑放入for c in contours循环内,让c对应当前处理的轮廓
  • 优化条件写法为area > 10000,逻辑更直观

内容的提问来源于stack exchange,提问作者Andrea Gutiérrez Ceballos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:15:42