Crazy Rockets

前言

不知道有多少人和小编一样时不时就被一些小游戏刷屏,这些游戏操作简单,老少皆宜,传播速度非常的快,分分钟霸屏朋友圈。小编也有一个梦想,希望自己有一天也能做出能够霸屏朋友圈的小游戏。但是要做出来一个这样的爆款小游戏可不是一件简单的事情,于是小编开始在网上收集信息,终于发现华为HMS ML Kit提供的人脸检测和手部关键点识别可以通过人脸以及手部关键点检测来实现游戏的趣味性。

应用场景

HMS ML Kit人脸检测服务对人脸多达855个关键点进行检测,返回人脸轮廓、眉毛、眼睛、鼻子、嘴巴、耳朵等部位的坐标以及人脸偏转角度等信息。集成人脸检测服务后开发者可以根据这些信息快速构建人脸美化的应用,或者在脸上加一些有趣的元素,增加图片的趣味性。

手部关键点识别技术在生活中有很多的应用场景。比如拍摄短视频的软件在集成了这种技术后,可以根据手部关键点生成一些可爱或者搞笑的特效,增加短视频的趣味性。

Crazy Rockets这款游戏集成了上述两个服务共同开发,这款游戏一共有两种玩法,一种是通过人脸的上下移动来控制火箭穿梭,通过巨石阵。另一种是通过手势的上下移动来控制火箭穿梭,通过巨石阵。两种方式都是通过检测人脸和手部关键点来反馈信息,进而控制火箭移动,趣味十足,下面就先来看看游戏展示吧! 在这里插入图片描述 在这里插入图片描述

怎么样?是不是很心动,那就跟着小编一起来看看怎么集成HMS ML Kit人脸检测能力来实现小游戏(Crazy Rockets)制作吧。

开发实战

详细的准备步骤可以参考华为开发者联盟:

https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-process-4

这里列举关键的开发步骤。

一.人脸

1.配置maven仓库

在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。

1allprojects { 2 repositories { 3 google() 4 jcenter() 5 maven {url 'https://developer.huawei.com/repo/'} 6 } 7}

在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。

1buildscript { 2 repositories { 3 google() 4 jcenter() 5 maven {url 'https://developer.huawei.com/repo/'} 6 } 7}

在“buildscript > dependencies”中增加agcp配置。

1dependencies { 2 ... 3 classpath 'com.huawei.agconnect:agcp:1.3.1.300' 4 } 5}

2.集成sdk

Implementation  'com.huawei.hms:ml-computer-vision-face:2.0.1.300'

3.创建人脸分析器

MLFaceAnalyzer analyzer = MLAnalyzerFactory.getInstance().getFaceAnalyzer();

4.创建处理类

1public class FaceAnalyzerTransactor implements MLAnalyzer.MLTransactor<MLFace> { 2 @Override 3 public void transactResult(MLAnalyzer.Result<MLFace> results) { 4 SparseArray<MLFace> items = results.getAnalyseList(); 5 // 开发者根据需要处理识别结果,需要注意,这里只对检测结果进行处理。 6 // 不可调用ML Kit提供的其他检测相关接口。 7 } 8 @Override 9 public void destroy() { 10 // 检测结束回调方法,用于释放资源等。 11 } 12}

5.创建LensEngine,用于捕捉相机动态视频流并传入分析器

1LensEngine lensEngine = new LensEngine.Creator(getApplicationContext(), analyzer) 2 .setLensType(LensEngine.BACK_LENS) 3 .applyDisplayDimension(1440, 1080) 4 .applyFps(30.0f) 5 .enableAutomaticFocus(true) 6 .create();

6.调用run方法,启动相机,读取视频流,进行识别

1// 请自行实现SurfaceView控件的其他逻辑。 2SurfaceView mSurfaceView = findViewById(R.id.surface_view); 3try { 4 lensEngine.run(mSurfaceView.getHolder()); 5} catch (IOException e) { 6 // 异常处理逻辑。 7}

7.释放检测资源

1if (analyzer != null) { 2 try { 3 analyzer.stop(); 4 } catch (IOException e) { 5 // 异常处理。 6 } 7} 8if (lensEngine != null) { 9 lensEngine.release(); 10}

二.手势识别

1.配置maven仓库

在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。

1allprojects { 2 repositories { 3 google() 4 jcenter() 5 maven {url 'https://developer.huawei.com/repo/'} 6 } 7}

在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。

1buildscript { 2 repositories { 3 google() 4 jcenter() 5 maven {url 'https://developer.huawei.com/repo/'} 6 } 7}

在“buildscript > dependencies”中增加agcp配置。

1dependencies { 2 ... 3 classpath 'com.huawei.agconnect:agcp:1.3.1.300' 4 } 5 }

2.集成sdk

1// 引入基础SDK 2implementation 'com.huawei.hms:ml-computer-vision-handkeypoint:2.0.4.300' 3// 引入手部关键点检测模型包 4implementation 'com.huawei.hms:ml-computer-vision-handkeypoint-model:2.0.4.300'

3.创建默认手势分析器

1 MLHandKeypointAnalyzer analyzer =MLHandKeypointAnalyzerFactory.getInstance().getHandKeypointAnalyzer(); 2

4.创建处理类

1public class HandKeypointTransactor implements MLAnalyzer.MLTransactor<List<MLHandKeypoints>> { 2@Override 3public void transactResult(MLAnalyzer.Result<List<MLHandKeypoints>> results) { 4SparseArray<List<MLHandKeypoints>> analyseList = results.getAnalyseList(); 5// 开发者根据需要处理识别结果,需要注意,这里只对检测结果进行处理。 6// 不可调用ML Kit提供的其他检测相关接口。 7} 8@Override 9public void destroy() { 10// 检测结束回调方法,用于释放资源等。 11} 12}

5.设置处理类

analyzer.setTransactor(new HandKeypointTransactor());

6.创建Lengengine

1LensEngine lensEngine = new LensEngine.Creator(getApplicationContext(), analyzer) 2.setLensType(LensEngine.BACK_LENS) 3.applyDisplayDimension(1280, 720) 4.applyFps(20.0f) 5.enableAutomaticFocus(true) 6.create();

7.调用run方法,启动相机,读取视频流,进行识别

1// 请自行实现SurfaceView控件的其他逻辑。 2SurfaceView mSurfaceView = findViewById(R.id.surface_view); 3try { 4lensEngine.run(mSurfaceView.getHolder()); 5} catch (IOException e) { 6// 异常处理逻辑。 7}

8.释放检测资源

1if (analyzer != null) { 2analyzer.stop(); 3} 4 5if (lensEngine != null) { 6lensEngine.release(); 7}

欲了解更多详情,请参阅:

华为开发者联盟官网:

https://developer.huawei.com/consumer/cn/hms/huawei-mlkit

获取开发指导文档:

https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/service-introduction-0000001050040017

参与开发者讨论请到Reddit社区:https://www.reddit.com/r/HuaweiDevelopers/

下载demo和示例代码请到Github:https://github.com/HMS-Core

解决集成问题请到Stack Overflow:

https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


原文链接: https://developer.huawei.com/consumer/cn/forum/topic/0201388581574050067?fid=18&pid=0301388581574050321 作者:timer

点赞
收藏

评论区

加载中...

相关推荐

three.js

第1章课程介绍介绍了微信小游戏的概念以及相关的由来,从宏观上对于微信小游戏的定位和价值有一个明确的认识第2章微信小游戏平台与特性讲了微信小游戏平台的相关特性,包括微信小游戏工程的建立,微信小游戏开发工具的详细使用,以及微信小游戏相关API的实战等第3章THREEJS与WebGL核心概念通过理论和实战,讲解了什么是webgl、什

手把手教你进行Pycharm活动模板配置

嘿,小伙伴们,大家好,我是李哥,人称嘴强王者。今天给大家秀点活动模板配置的操作,一起来看看趴!/1前言/最近后台很多小伙伴加小编微信,说是想使用Pycharm,除了简单的安装Pycharm和设置Pycharm解释器之外,,,有个活动模板配置,小编觉得也还是蛮重要的,这里整理出来给大家学习。如果想学习一些Pycharm的使用技巧,在后台的精选文章栏目里边有专

手把手教你进行Pycharm活动模板配置

嘿,小伙伴们,大家好,我是李哥,人称嘴强王者。今天给大家秀点活动模板配置的操作,一起来看看趴!/1前言/最近后台很多小伙伴加小编微信,说是想使用Pycharm,除了简单的安装Pycharm和设置Pycharm解释器之外,,,有个活动模板配置,小编觉得也还是蛮重要的,这里整理出来给大家学习。如果想学习一些Pycharm的使用技巧,在后台的精选文章栏目里边有专

LayaAir 1.7.20大幅度优化了微信小游戏发布体验!增加ETH,NEO区块链项目支持,可创建区块链项目!

LayaAir引擎与IDE的版本更新很少会在公众号中提及,这次为什么要讲一下呢?因为此次IDE的LayaAir1.7.20版本有两个重要功能的更新。游戏发布体验第一个是发布的体验。这个体验虽然是针对所有版本的发布的,但是小编认为对于微信小游戏开发者的体验更赞。下面针对这块的优化点进行简单介绍一下。我们先看一下项目发布

Android 快速集成手部关键点识别能力 超简单

前言之前在《用华为HMSMLkit人体骨骼识别技术,Android快速实现人体姿势动作抓拍》文章中,我们给大家介绍了HMSMLKit人体骨骼识别技术,可以定位头顶、脖子、肩、肘、手腕、髋、膝盖、脚踝等多个人体关键点。那么除了识别人体关键点以外,HMSMLKit还为开发者提供了手部关键点识别技术,可以定位包括手指指尖、关节点,以及手腕点等

Android 超简单集成活体检测技术 快速识别“假脸”

Android超简单集成活体检测技术快速识别“假脸”前言你有没有过这样的顾虑,刷脸解锁真的安全吗?如果有人用我的照片或者视频冒充我,那么手机可不可以发现镜头前不是我本人呢?当然可以啦。华为HMSMLKit活体检测技术可以准确地分辨真实人脸和“假脸”。不管是人脸翻拍照片、人脸视频重放,还是人脸面具,活体检测技术都可以马上揭穿这些“

Crazy Rockets - HelloWorld