用姿态估计做体感拳皇游戏

点击

好久没给大家带来好玩有料的干货了,所以这一次决定给大家带来一个基于姿态估计做的体感拳皇游戏!

那么这一次呢,我们需要用到一个openpose的姿态估计算法,这个算法可以检测人体的18个关节点,然后就可以基于关节点的信息进行游戏开发了。

01

安装OpenPose

这个是来自卡内基梅隆的开源算法,我想说这个算法真的很鲁棒,不信来看看效果。

openpose这个算法集成Convolutional Pose Machines、Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields 和Hand Keypoint Detection in Single Images 这三篇paper的研究。不得不说,效果的确是好啊。下面给出算法GitHub地址,安装教程在ReadMe也写得十分详细了。

GitHub地址

https://github.com/CMU-Perceptual-Computing-Lab/openpose

好的,大家根据Readme上的教程安装就好,官方算法是C++的,如果小伙伴还想用python版的就要去安装PyOpenPose。GitHub地址:https://github.com/FORTH-ModelBasedTracker/PyOpenPose

02

模型输出接口

要想用这个算法,肯定要找到它输出的接口啊。以PyOpenPose为例,输出接口可以在这个文件中找到:PyOpenPose/scripts/OpLoop.py。这个是实时检测的代码。

使用接口的用例代码如下:

op= OP.OpenPose((320,240),(240,240),(640,480),"COCO",OPENPOSE_ROOT + os.sep +"models"+ os.sep,,download_heatmaps)

op.detectPose(rgb)

res =op.render(rgb)

上面的是检测Pose的,还有detectFace、detectHands等等功能,如果加上这些的话,速度可能会有点感人,所以只用detectPose的话还好。

03

写游戏界面和逻辑

游戏界面就随意发挥了,资源网上也很多,有个素材网站叫爱给网,在上面搜索拳皇就会弹出很多相关的资源。

游戏逻辑呢,我们先要清楚我们是要根据我们的动作来触发游戏中动画人物的动作,那么我们可以根据我们的关节位置的变化来触发,比如我们的手举过头顶要触发某个动作,那么手腕关节的Y坐标一定会比头顶的Y坐标要小(左上角为0,0坐标),那么根据其它的关节点的位置变化也可以推断出其它动作。

关节点的坐标位置分布图如下:

所有关节点的信息会以一个张量形式返回,所以只要根据对应下标就能取到对应的坐标。下面来看演示视频。

04

最后

有了这些关节点的坐标其实我们可以做更多的交互,只要有创意,赶紧动手吧!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727G0QSGU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券