Crazy Rockets

Stella981
• 阅读 665

前言

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

应用场景

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

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

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

allprojects {
    repositories {
        google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

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

buildscript {    
    repositories {        
       google()        
       jcenter()        
       maven {url 'https://developer.huawei.com/repo/'}    
    }
}

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

dependencies {
        ...        
        classpath 'com.huawei.agconnect:agcp:1.3.1.300'    
     }    
}

2.集成sdk

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

3.创建人脸分析器

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

4.创建处理类

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

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

LensEngine lensEngine = new LensEngine.Creator(getApplicationContext(), analyzer)
    .setLensType(LensEngine.BACK_LENS)
    .applyDisplayDimension(1440, 1080)
    .applyFps(30.0f)
    .enableAutomaticFocus(true)
    .create();

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

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

7.释放检测资源

if (analyzer != null) {
    try {
        analyzer.stop();
    } catch (IOException e) {
         // 异常处理。
    }
}
if (lensEngine != null) {
    lensEngine.release();
}

二.手势识别

1.配置maven仓库

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

allprojects {
    repositories {
        google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

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

buildscript {    
     repositories {        
         google()        
         jcenter()        
         maven {url 'https://developer.huawei.com/repo/'}    
     }
}

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

dependencies {
        ...        
        classpath 'com.huawei.agconnect:agcp:1.3.1.300'    
     }
 }

2.集成sdk

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

3.创建默认手势分析器

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

4.创建处理类

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

5.设置处理类

analyzer.setTransactor(new HandKeypointTransactor());

6.创建Lengengine

LensEngine lensEngine = new LensEngine.Creator(getApplicationContext(), analyzer)
.setLensType(LensEngine.BACK_LENS)
.applyDisplayDimension(1280, 720)
.applyFps(20.0f)
.enableAutomaticFocus(true)
.create();

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

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

8.释放检测资源

if (analyzer != null) {
analyzer.stop();
}
  
if (lensEngine != null) {
lensEngine.release();
}

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

华为开发者联盟官网:

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

点赞
收藏
评论区
推荐文章
Irene181 Irene181
3年前
手把手教你进行Pycharm活动模板配置
嘿,小伙伴们,大家好,我是李哥,人称嘴强王者。今天给大家秀点活动模板配置的操作,一起来看看趴!/1前言/最近后台很多小伙伴加小编微信,说是想使用Pycharm,除了简单的安装Pycharm和设置Pycharm解释器之外,,,有个活动模板配置,小编觉得也还是蛮重要的,这里整理出来给大家学习。如果想学习一些Pycharm的使用技巧,在后台的精选文章栏目里边有专
Easter79 Easter79
3年前
three.js
第1章课程介绍介绍了微信小游戏的概念以及相关的由来,从宏观上对于微信小游戏的定位和价值有一个明确的认识第2章微信小游戏平台与特性讲了微信小游戏平台的相关特性,包括微信小游戏工程的建立,微信小游戏开发工具的详细使用,以及微信小游戏相关API的实战等第3章THREEJS与WebGL核心概念通过理论和实战,讲解了什么是webgl、什
Karen110 Karen110
3年前
手把手教你进行Pycharm活动模板配置
嘿,小伙伴们,大家好,我是李哥,人称嘴强王者。今天给大家秀点活动模板配置的操作,一起来看看趴!/1前言/最近后台很多小伙伴加小编微信,说是想使用Pycharm,除了简单的安装Pycharm和设置Pycharm解释器之外,,,有个活动模板配置,小编觉得也还是蛮重要的,这里整理出来给大家学习。如果想学习一些Pycharm的使用技巧,在后台的精选文章栏目里边有专
Stella981 Stella981
3年前
LayaAir 1.7.20大幅度优化了微信小游戏发布体验!增加ETH,NEO区块链项目支持,可创建区块链项目!
LayaAir引擎与IDE的版本更新很少会在公众号中提及,这次为什么要讲一下呢?因为此次IDE的LayaAir1.7.20版本有两个重要功能的更新。游戏发布体验第一个是发布的体验。这个体验虽然是针对所有版本的发布的,但是小编认为对于微信小游戏开发者的体验更赞。下面针对这块的优化点进行简单介绍一下。我们先看一下项目发布
Stella981 Stella981
3年前
Android 快速集成手部关键点识别能力 超简单
前言之前在《用华为HMSMLkit人体骨骼识别技术,Android快速实现人体姿势动作抓拍》文章中,我们给大家介绍了HMSMLKit人体骨骼识别技术,可以定位头顶、脖子、肩、肘、手腕、髋、膝盖、脚踝等多个人体关键点。那么除了识别人体关键点以外,HMSMLKit还为开发者提供了手部关键点识别技术,可以定位包括手指指尖、关节点,以及手腕点等
Stella981 Stella981
3年前
Android 超简单集成活体检测技术 快速识别“假脸”
Android超简单集成活体检测技术快速识别“假脸”前言你有没有过这样的顾虑,刷脸解锁真的安全吗?如果有人用我的照片或者视频冒充我,那么手机可不可以发现镜头前不是我本人呢?当然可以啦。华为HMSMLKit活体检测技术可以准确地分辨真实人脸和“假脸”。不管是人脸翻拍照片、人脸视频重放,还是人脸面具,活体检测技术都可以马上揭穿这些“
Stella981 Stella981
3年前
Protobuf在微信小游戏开发中的使用技巧
微信小游戏发布后,许多HTML5游戏开发者希望把现有的HTML5游戏迁移到微信小游戏中,但由于一些技术上的问题导致进程卡壳。通过梳理Egret社区、白鹭小游戏开发技术讨论群等途径的反馈后发现,有不少开发者遇到的难题在于「如何在微信小游戏中使用Protobuf」。白鹭引擎架构师王泽在近期发布了一个开源项目protobufegret,提供了一个可
Wesley13 Wesley13
3年前
JAVA游戏编程学习笔记(四)Java PinBall 简单弹球小游戏【1】
之前写了一个非常简单的Java2D小游戏底层框架,为了把这个游戏框架丰富起来,这阵子需要实际完成几个小游戏代码,这样才能在实际中检验游戏框架使用性!先来一个简单的小游戏:JavaPinBall简单弹球小游戏 先上图!!(http://static.oschina.net/uploads/space/2015/1110/202955_
Stella981 Stella981
3年前
LayaAir:用3D项目演示老项目如何适配微信小游戏
在QQ上线玩一玩后,引擎部同事彻夜鏖战,刚刚终于上线了1.7.15beta版。推出了QQ玩一玩与微信小游戏的一键发布功能。小编送上一篇刚出炉的技术干货,希望能给开发者带来帮助。之前有介绍过微信小游戏的创建与调试全流程,从1.7.15beta开始,这个流程更加完善,尤其是TS与JS的开发者,也可以做到一键发布微信小游戏了。本篇尽可
Easter79 Easter79
3年前
Tongue Twister
前言实不相瞒,小编作为了一个湖南人,时常被说普通话不够标准,不仅N/L不分,有时候还分不出来卷舌音,经常闹笑话,导致小编十分苦恼。有时看着电视里的主持人流利的口播,和完全标准的绕口令都羡慕不已,常常幻想着自己有一天也能说一口流利的绕口令。恰巧,小编昨日上网的时候被推送了集成了华为HMSMLKit实时语音服务的小游戏TongueTwiste