当前位置: 首页 > news >正文

Python 玩转摄像头:MediaPipe 手势追踪贪吃蛇游戏(含完整环境配置教程)

本文将带你从零开始搭建一个 Python 多功能项目 Project2(https://github.com/WLHSDXN/Project2)。
无论你是想学习计算机视觉、自动化脚本,还是 Web 爬虫 + 邮件通知,这个项目都能给你完整的实践参考。

一、整体项目结构

Project2-main/ ├── README.md# 项目总说明├── SnakeGame/# 摄像头贪吃蛇│ ├── main.py# 游戏主入口│ ├── HandTrackingModule_fixed.py# 手势追踪模块(适配 MediaPipe 0.10+)│ ├── hand_landmarker.task# MediaPipe 手部模型文件│ ├── donut.png# 食物图片│ └── requirements.txt# 依赖清单├── AutomatedScript/# 自动化脚本│ ├── MessageBombing.py# 消息轰炸脚本│ └── README.md └── AutomatedScript_QueryScore/# 成绩监控├── cjcx.py# 核心查询 + 邮件发送└── README.md

二、环境准备(通用部分)

2.1 Python 版本

推荐使用 Python 3.8 ~ 3.10。项目依赖中部分库(如 tensorflow2.6.2、mediapipe0.8.3)在高版本 Python 上可能存在兼容性问题。
⚠️ 注意:如果你只需要运行 SnakeGame,不需要 tensorflow,可以跳过安装它。

# 在项目根目录下python-mvenv venv# Windows 激活venv\Scripts\activate# Linux/Mac 激活sourcevenv/bin/activate

2.2 创建虚拟环境(推荐)

# 在项目根目录下python-mvenv venv# Windows 激活venv\Scripts\activate# Linux/Mac 激活sourcevenv/bin/activate

2.3 安装依赖

SnakeGame 模块提供了 requirements.txt,一键安装:

cdSnakeGame pipinstall-rrequirements.txt

其他两个模块依赖较少,单独安装即可:

# AutomatedScriptpipinstallpynput# AutomatedScript_QueryScorepipinstallrequests# smtplib 为 Python 内置库,无需安装

三、模块一:SnakeGame(摄像头贪吃蛇)

3.1 项目简介

这是整个项目中最亮眼的模块。通过摄像头捕捉你的手部动作,食指指尖控制蛇的移动方向,实现"隔空玩贪吃蛇"的效果。
###3.2 核心依赖及作用
核心依赖主要为 mediapipe(手势识别)、cv2(摄像头捕捉与画面渲染)、cvzone(简化OpenCV操作),均已包含在 SnakeGame 目录的 requirements.txt 中,一键安装即可。

3.3 关键配置步骤

① 下载 MediaPipe 手部模型文件
项目已内置 hand_landmarker.task 文件在 SnakeGame/ 目录下。如果缺失,可从 MediaPipe 官方(https://ai.google.dev/edge/mediapipe/solutions/vision/hand_landmarker)下载,放置到 SnakeGame/ 目录。
② 确认摄像头可用
运行以下测试代码验证摄像头正常:

importcv2 cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)ret,frame=cap.read()print("摄像头正常"ifretelse"摄像头异常")cap.release()

如果提示摄像头异常,检查:

  • 是否有其他程序占用摄像头
  • 笔记本用户确认隐私设置中允许应用访问摄像头
  • 尝试将 0 改为 1 或 2(多摄像头设备)
    ③ 运行游戏
cdSnakeGame python main.py
  • 游戏启动后,将手伸到摄像头前,食指指尖即为蛇头位置
  • 吃到甜甜圈(食物)得 1 分,蛇身增长
  • 蛇身缠绕自身则 Game Over
  • 按 R 键重新开始

3.4 核心代码逻辑解析

游戏主循环 (main.py):

# 初始化摄像头 1280x720cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)cap.set(3,1280)# 宽cap.set(4,720)# 高# 初始化手势检测器,只检测一只手,置信度 0.8detector=HandDetector(detectionCon=0.8,maxHands=1)# 主循环whileTrue:success,img=cap.read()img=cv2.flip(img,1)# 水平翻转,镜像效果hands,img=detector.findHands(img,flipType=False)ifhands:lmList=hands[0]['lmList']pointIndex=lmList[8][0:2]# 食指指尖坐标img=game.update(img,pointIndex)cv2.imshow("Image",img)ifcv2.waitKey(1)==ord('r'):game.gameOver=False# 按 R 重开

碰撞检测 (SnakeGameClass.update()):

# 将蛇身点(除头部两个点)连成折线pts=np.array(self.points[:-2],np.int32)pts=pts.reshape((-1,1,2))cv2.polylines(imgMain,[pts],False,(0,200,0),3)# 计算蛇头到折线的最短距离minDist=cv2.pointPolygonTest(pts,(cx,cy),True)# 距离接近 0 说明蛇头碰到了身体 → 游戏结束if-1<=minDist<=1:self.gameOver=True

3.5 手势追踪模块说明

项目使用了自定义的 HandTrackingModule_fixed.py,专门适配了 MediaPipe 0.10+ 的新 API(旧版 cvzone 的 HandTrackingModule 在新版 MediaPipe 上会报错)。
关键变化:

  • 使用 mediapipe.tasks.python.vision.HandLandmarker 替代旧的 mp.solutions.hands
  • 需要加载 .task 模型文件
  • 输出格式从归一化坐标转换为像素坐标

四、模块二:AutomatedScript(自动化脚本)

该模块包含自动化处理重复任务的脚本,核心文件为MessageBombing.py(消息轰炸脚本),依赖仅需 pynput(用于模拟键盘/鼠标操作)。
运行方式:进入 AutomatedScript 目录,直接执行 python MessageBombing.py,可根据脚本内注释修改轰炸内容、频率等参数。

五、模块三:AutomatedScript_QueryScore(成绩监控)

核心功能:部署在服务器上,实时监测成绩发布情况,一旦有新成绩,立即发送邮件到指定邮箱,核心文件为 cjcx.py。
依赖:requests(用于请求成绩查询接口),smtplib(Python 内置,用于发送邮件)。
使用前需在 cjcx.py 中配置:成绩查询接口地址、个人查询参数、邮箱账号密码、接收邮件地址等,配置完成后直接运行即可实现后台监控。

六、常见问题汇总

Q1:SnakeGame 运行报错 ModuleNotFoundError: No module named ‘cvzone’
解决方案:执行 pip install cvzone 安装依赖。
Q2:摄像头画面是黑的 / 打不开

  • 确认摄像头驱动正常
  • 检查是否有杀毒软件/隐私设置阻止了摄像头访问
  • 尝试把 cv2.VideoCapture(0) 中的 0 改为 1
    Q3:MediaPipe 相关报错(如模型加载失败)
    解决方案:确认 hand_landmarker.task 文件已放置在 SnakeGame 目录,若缺失,从 MediaPipe 官方地址重新下载。

七、总结

非常适合作为 Python 新手的综合练手项目,每个模块都可以独立运行,互相不耦合,涵盖计算机视觉(MediaPipe 手势识别)、自动化操作、网络请求+邮件通知等常用场景。

项目地址:https://github.com/WLHSDXN/Project2
如果觉得有帮助,欢迎点赞收藏 ⭐~

http://www.jsqmd.com/news/710958/

相关文章:

  • 4GB显存也能玩转SDXL?Fooocus低配置AI绘图终极指南
  • 2026最强全能 AI Agent:Codex 零基础完整实战教程(基于 GPT-5.5 与 Image-2 模型)
  • 终极指南:如何用Prompt Optimizer节省90%的LLM API成本
  • 云原生入门系列|第18集:K8s集群扩容与灾备,筑牢生产级安全防线
  • Docker Desktop已不适用边缘场景?3大被低估的WASM容器运行时替代方案对比实测(含启动耗时、内存驻留、TEE支持度数据)
  • Sqlserver 学习笔记
  • mysql用户无法访问存储过程权限提示_MySQL EXECUTE赋权方案.txt
  • Wox终极指南:如何用跨平台启动器提升10倍工作效率?
  • 还不会 CSS 选择器?超详细基础讲解
  • 云顶之弈悬浮辅助工具:TFT Overlay 终极免费指南
  • Linux 进程间通信(IPC):管道与信号量完全指南
  • 【025】类加载:双亲委派与应用隔离
  • FB的聊天軟件上發鏈接不顯示圖片
  • 超级编导源码流出,技术大拿深度对比超级编导与超级智剪云混剪架构
  • 【20年嵌入式老兵亲授】:C语言裸机编程在工业边缘节点中规避内存泄漏与时序抖动的7个硬核技巧
  • GPT Image 2-城市海报
  • 云原生入门系列|第19集:K8s进阶收尾,知识点复盘+实战综合演练
  • AI智能体浏览器自动化实战:绕过反爬虫与验证码的终极方案
  • 探索 MCP (Model Context Protocol):构建智能体与外部工具的桥梁
  • 【2026收藏版】图解DeepSeek V4:详细计算流程解析(小白程序员入门必备)
  • 这个AI插件直接“接管编辑器”?Unity开发要变天了!
  • 微信投票系统实战,投票制作平台功能介绍,投票小程序源码结构
  • Kafka-King:解决企业级Kafka运维痛点的现代化桌面客户端
  • VS Code MCP权限体系设计:RBAC+策略即代码(Policy-as-Code)双模管控,附GRC兼容配置清单
  • 探索 MCP 协议:构建下一代 AI Agent 的标准化基石
  • 【军工级C代码可信保障体系】:从ANSI C89到MISRA C:2023,5步构建可审计、可追溯、可认证的形式化验证流水线
  • BERT双向注意力机制原理与实践指南
  • ReactAgent:基于GPT-4的React组件智能生成器,从需求到代码的自动化实践
  • 终极指南:如何在电脑上免费畅玩Switch游戏?Ryujinx模拟器完整教程
  • 2026工程基建与零基础跑通篇:2026年YOLO生态概览:从学术界顶会发文到工业界落地的全链路闭环