|
49| 1
|
[项目] 人类VS喵星人猜拳小游戏(mediapipe) |

|
本帖最后由 gada888 于 2025-12-17 18:13 编辑 AI都来陪你玩猜拳啦! 最近我用 Python 做了个小玩意儿——一个人机互动猜拳小游戏! 不需要鼠标键盘,只要打开摄像头,对着它比个手势, 电脑就能认出你出的拳,还会立刻和你 PK 一局。 技术亮点大揭秘:
这个小游戏超级轻量又好玩, 既能学学手势识别的小知识,还能随手来两局放松一下。 要不,你也来和 AI 猜一把拳? 这个是这colab环境调试的,但是不建议初学者用 ![]() 你可以这python环境直接打开。首先安装python最新版。注意添加路径到系统环境。然后打开我给你的hand.py文件。用右键点击 ![]() 打开后,找run ![]() 然后选run module ![]() 耐心等一会 ![]() 游戏界面出来了。 ![]() 这是一段Python 代码,它结合了 计算机视觉 (OpenCV + MediaPipe) 和 图形用户界面 (Tkinter),实现了一个互动式的“石头剪刀布”游戏。 代码逻辑分析
[code]import cv2 # OpenCV库:用于调用摄像头、处理图像(翻转、色彩转换等) import mediapipe as mp # Google的MediaPipe库:用于高精度的手部关键点检测 import tkinter as tk # Python标准GUI库:用于创建游戏窗口和界面元素 from tkinter import font # Tkinter字体模块:用于设置漂亮的字体 from PIL import Image, ImageTk # Pillow库:用于将OpenCV图像转换为Tkinter能显示的格式 import random # 随机数库:用于电脑随机出拳 import time # 时间库:用于计算倒计时 import math # 数学库:用于计算距离(勾股定理) # 已移除 winsound 模块 class CuteRPSGame: def __init__(self, root): """ 初始化游戏类 :param root: Tkinter的主窗口对象 """ self.root = root self.root.title("✨ 萌萌哒AI猜拳大作战 ✨") # 设置窗口标题 self.root.geometry("1000x700") # 设置窗口初始大小 self.root.configure(bg="#FFF0F5") # 设置背景颜色:淡紫红 (LavenderBlush) # --- 1. 初始化 MediaPipe 手部识别模型 --- self.mp_hands = mp.solutions.hands self.hands = self.mp_hands.Hands( static_image_mode=False, # 视频流模式,设为False可以提高跟踪速度 max_num_hands=1, # 最多检测一只手(如果是双手玩法可改为2) min_detection_confidence=0.7, # 检测置信度阈值,越高手势识别越严谨 min_tracking_confidence=0.5 # 跟踪置信度阈值 ) # 绘图工具,用于在视频画面上画出手骨架 self.mp_drawing = mp.solutions.drawing_utils self.mp_drawing_styles = mp.solutions.drawing_styles # --- 2. 初始化摄像头 --- # 参数 0 通常代表电脑的默认摄像头 self.cap = cv2.VideoCapture(0) # --- 3. 初始化游戏状态变量 --- self.is_playing = False # 标记当前是否正在进行对决 self.countdown_start_time = 0 # 记录倒计时开始的时间戳 self.countdown_duration = 3 # 设定倒计时总时长为3秒 # 已移除 last_countdown_num (音效相关) self.game_result = "" # 存储每一局的输赢结果文字 self.player_gesture = "未知" # 玩家当前的手势 self.computer_gesture = "等待" # 电脑当前的状态/手势 self.scores = {"player": 0, "computer": 0} # 记录比分 # --- 4. 资源映射字典 --- # 将英文的手势名称映射为可爱的 Emoji 表情 self.gesture_emojis = { "Rock": "✊", "Paper": "✋", "Scissors": "✌️", "Unknown": "❓", "Wait": " |
沪公网安备31011502402448© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed