opencv视觉小游戏—石头剪刀布

星星
2023-04-25 / 0 评论 / 141 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年04月25日,已超过593天没有更新,若内容或图片失效,请留言反馈。
效果展示

程序代码

石头剪刀布代码解释

 这是一个手势石头剪刀布游戏的Python代码。这个游戏使用计算机视觉技术检测玩家的手势,并将其与计算机生成的随机手势进行比较。玩家和计算机都可以选择石头,剪刀或布。如果玩家赢了,则得分加1,如果玩家输了,则得分减1。如果平局,则不会加分或减分。游戏将持续进行直到程序被停止。
1、代码首先导入所需的库,包括cv2(OpenCV)用于图像处理和检测手势,time用于计时,os用于读取图像文件,以及一个名为HandTrackingModule的自定义模块,用于手势识别。然后,代码设置一些常量,包括摄像头的宽度和高度,胜利和失败的消息,以及一个用于存储图像文件的文件夹路径。
2、接下来,代码读取图像文件夹中的所有图像文件,并将它们存储在一个列表中。然后,代码初始化一个HandTrackingModule对象,用于检测手势。代码还定义了一个包含手指顶部ID的列表,这些ID对应于手指的末端。最后,代码进入一个无限循环,每次循环中检测玩家的手势并计算得分。
3、在每次循环中,代码读取摄像头的当前帧,并使用HandTrackingModule对象检测手势。代码检查检测到的手指数量,并将其与预设的手势相匹配(石头、剪刀、布)。如果匹配成功,则代码将显示相应的消息并将变量end设置为“win”或“fail”,表示玩家赢了或输了。代码还将检查计算机随机生成的手势,并将其显示在图像上。
4、一旦检测到手势,代码将比较玩家的手势和计算机生成的手势。如果两者相同,则比赛平局。如果玩家赢了,则得分加1,如果玩家输了,则得分减1。代码将显示得分,以及最近一次比赛的结果。
5、一旦比赛结束并且时间超过两秒钟,代码将重置所有变量并开始新的游戏。

HandTrackingModule代码解释

1、这是一个使用Mediapipe库和OpenCV库实现的手部检测器。它可以检测图像或视频中的手部,并给出手部的关键点位置。这个程序使用了一个名为handDetector()的类来实现手部检测和关键点检测。该类的构造函数可以设置一些参数,如最大手数、检测置信度和跟踪置信度等。
2、findHands()函数使用Mediapipe库来检测图像中的手部,并在图像中绘制出检测到的手部的关键点。findPosition()函数可以通过检测到的关键点返回手部的关键点位置。
3、在主函数中,我们打开计算机的摄像头,不断地读取帧,并在每一帧中调用findHands()findPosition()函数来检测手部,并绘制关键点。程序还会计算每秒钟处理的帧数(FPS)并显示在窗口中。

本文共 790 个字数,平均阅读时长 ≈ 2分钟
0

评论 (0)

取消