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

运行OpenCV-Python手部追踪模块出现NameError错误如何修复

错误原因

  1. 核心报错NameError: name 'results' is not defined由mediapipe版本与教程使用的旧版本不兼容导致:你参考的Murtaza教程使用的是0.8.x版本的mediapipe,该版本Hands类的构造参数顺序与现行0.9+版本不一致,新版本在参数列表第二位新增了model_complexity参数,你原代码按旧顺序传参导致Hands实例初始化失败,调用process方法时抛出异常,results变量未完成定义就进入了后续判断逻辑。
  2. 末尾的摄像头警告是Windows平台OpenCV默认使用MSMF后端的常见提示,不影响核心功能,可选择性修复。

修复方案

1. 修复NameError报错(二选一即可)

方案A:适配新版mediapipe(推荐,无需降级库)

修改handDetector类__init__方法中Hands实例化代码,显式指定参数名规避顺序错位问题:

# 替换原有的self.hands = self.mpHands.Hands(...) 行
self.hands = self.mpHands.Hands(
    static_image_mode=self.mode,
    max_num_hands=self.maxHands,
    min_detection_confidence=self.detectionCon,
    min_tracking_confidence=self.trackCon
)

方案B:降级mediapipe到教程对应版本

在PyCharm终端执行以下命令安装旧版本:

pip install mediapipe==0.8.7

2. 修复摄像头警告(可选)

创建VideoCapture实例时指定使用DSHOW后端,替换原main函数中的初始化代码:

# 替换原cap = cv2.VideoCapture(0)行
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

验证效果

修改完成后运行代码,正常会调用本地摄像头,检测到人手时绘制关键点与骨骼连线,左上角实时显示FPS数值,无报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:08