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

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

技术要点:

  • 本程序主要是利用了百度的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篇干货!