看了范伟和葛大爷的电影,我决定用Python做个石头剪刀布

本文介绍了一款基于Python和百度AI开放平台的人机猜拳游戏。利用opencv捕捉手势,通过百度API分析手势,实现与电脑的猜拳对决。游戏流程包括手势捕获、分析及胜负判断。

最近大家都陆陆续续开始上班复工了,但是节后综合征让大家都没有很好的注意力来上班,所以小编为了给大家提供学习和游乐的好帮手,决定为大家开发一款新的游戏,名字叫做《人机猜拳大对决》。

技术要点:

  • 本程序主要是利用了百度的AI开放平台,我们只需要通过百度开放的接口;

  • 并按照接口的格式上传我们拍摄的图片,便可以返回我们的手势姿势;

  • 通过返回的手势姿势和电脑自动生成的手势,进行猜拳,并判断谁胜谁负。

用到的库:

  • 百度AI的API库: baidu-aip。

  • 用于打开摄像头并保存图片的opencv库:cv2

  • 用于延时的库: time

  • 随机选择参数的库: random

  • 获取接口返回数据的库:requests

  • 用于接口上传数据加密的库:base64

01

整体设计思路

游戏的玩法其实很简单,大家只需要运行程序,然后程序会自动启动电脑的摄像头,然后大家只需要在摄像头中比出剪刀、石头和布的形状,调整好姿势后,按“enter”键进行确认,程序便会自动的进行判断,到底谁胜谁负。

当然,在双方出拳的过程中,谁也不能发现对方的结果,这样就保证了游戏的公平性,下面就跟随小编一起来了解整个程序的流程吧。

1).获取手势的姿势

要获取我们比出的手势姿势,我们需要调用电脑的摄像头,这里小编利用的是opencv来打开摄像头,程序如下图所示:

上述的程序中,我们使用opencv打开摄像头,然后不断的去获取视频流中的帧,当我们调整好姿势之后,便点击“enter”按钮来保存我们视频流中的获取的最后一帧图像,并保存到本地当中,结果如下所示:

02

让电脑明白我们的手势

上面是保存了我们的手势的图像,接下来我们就要去判断我们比出的手势到底是什么了,这里我们利用的是百度的人体分析的API进行分析,程序如下所示:

上述的程序中,我们首先要构造我们的链接,这里的access_token关键字是我们的访问令牌,有了这个令牌我们才能获取得到我们的结果。然后我们技术分析我们的返回结果,如果不是剪刀、石头或者是布,则返回“unknown”。

那么我们如何获取这个access_token令牌呢:

  • 首先我们需要去到百度的AI开发者平台,创建一个人体分析的应用;

  • 并得到应用的API Key和Secret Key,然后运行下图中的程序,获取得到我们的access_token令牌;

  • 其中client_id就是我们的API Key,client_secret就是我们的secret_key

通过百度的API获得我们的答案后,接下来就是跟电脑出的拳进行PK了,程序如下图所示:

  • 上述的程序中,电脑首先随机出一个数字,并保存到computer_ges变量中;然后我们通过catch_gesture和get_gesture_result函数获取得到我们的输入;接着电脑会比较我们出的拳与电脑出的拳,并判断谁胜谁负,并给出提示;

  • 如果我们想退出游戏,点击‘q’即可停止;

  • 如果想继续的话,大家只需要点击其他的按键即可。

以上就是为大家进行程序的介绍,最后小编为大家带来视频的展示,通过趣味学习Python,如果觉得有趣,那就动起手来,玩起来吧!

视频展示:

需要源码,后台输入:菜鸟哥

近期热门:

高手心得|菜鸟学Python从入门到进阶

干货来了!菜鸟入门最经典的机器学习项目,面试必考!

400多人做过的8道Python极速入门题

 点击阅读原文,阅读菜鸟学Python 400篇干货!

代码下载链接: https://pan.quark.cn/s/a175d1ef418b 标题部分中的"新建文件夹 (2).zip"暗示这是一个采用ZIP编码方式的压缩文档,这种格式通常用于将多个关联的文件或目录整合进一个压缩单元中。在信息技术领域,ZIP编码格式是一种广泛应用的标准,它支持将多个数据单元压缩成一个独立的压缩文件,从而提升文件传输的便捷性、存储空间的利用效率以及管理的便捷度。ZIP格式的压缩文件可以通过多种解压缩工具进行访问,例如WinRAR软件、7-Zip应用程序或操作系统自带的压缩解压功能。 描述文本里的"shop"字样或许指向这个压缩文档与商业店铺、电子商务平台或网络销售系统存在关联。在Java编程范畴内,这有可能是一个范例项目,用以说明构建电子商务平台相关功能的实现方法,涵盖商品维护、购物车功能以及订单处理等模块。Java语言因其跨平台兼容性、系统稳定性以及完备的库资源支持,经常被选作开发大型企业级应用的技术栈,尤其是电子商务系统。 依据标签"java"的指示,可以推断压缩包内部可能包含了采用Java编程语言编写的源代码片段、系统配置文档、数据库操作脚本及其他辅助性资源。Java程序员一般借助集成开发环境(IDE)如Eclipse、IntelliJ IDEA或NetBeans进行Java代码的编写、编译及执行操作。这些开发工具能够高效地支持ZIP文件中项目结构的导入与管理。 文件命名列表仅列出一个条目"新建文件夹 (2)",这或许意味着压缩文档中包含一个同名的文件夹,该文件夹内可能收纳了一系列子文件及子目录。在实际的Java开发任务中,类似的结构可能包含src目录(存放程序源代码)、lib目录(存放项目依赖的jar库文件)、resou...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值