你有没有过这种体验,拍照时对着镜头,脑子一片空白、表情僵硬、手和脚无处安放,最后拍出来的照片很是奇怪。拍照软件中的固定姿势抓拍功能可以帮助你:选择一个你想要的姿势模板,当你摆出同款姿势时,软件会进行自动抓拍,完美避开拍照时的尴尬。本文详细介绍了华为HMS ML kit人体骨骼识别技术的集成过程,该技术精准定位了14个骨骼点,可以轻松实现固定姿势抓拍。 

人体骨骼检测功能开发实战

  做了一个视频流骨骼识别小demo,做一次实战演练,Github demo源码:https://github.com/HMS-Core/hms-ml-demo/tree/master/MLKit-Sample 

1.开发前准备

  您需要完成必要的开发准备工作,同时请确保您的工程中已经配置HMS Core SDK的Maven仓地址,并且完成了本服务的SDK集成。  

1.1 在项目级build.gradle文件中配置maven仓地址。

buildscript {
repositories {
google()
jcenter()
maven { url 'https://developer.huawei.com/repo/' }
}
//配置AGC插件
dependencies {
classpath "com.android.tools.build:gradle:3.3.2"
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://developer.huawei.com/repo/' }
}
}

1.2在应用级build.gradle中引入SDK。

dependencies {
implementation 'com.huawei.hms:ml-computer-vision-skeleton-model:2.0.1.300'
implementation 'com.huawei.hms:ml-computer-vision-skeleton:2.0.1.300'
implementation 'com.huawei.hms:ml-computer-vision-base:2.0.1.300'
}

2.开发步骤

2.1 静态图片检测

2.1.1 创建人体骨骼检测器。

MLSkeletonAnalyzer analyzer = MLSkeletonAnalyzerFactory.getInstance().getSkeletonAnalyzer();

2.1.2 通过bitmap创建MLFrame,建议图片尺寸不小于320 * 320像素,不大于1920 * 1920像素。

//通过bitmap创建MLFrame。
MLFrame frame = MLFrame.fromBitmap(bitmap);

2.1.3 调用“asyncAnalyseFrame”方法进行人体骨骼检测。

  Task<List<MLSkeleton>> task = analyzer.asyncAnalyseFrame(frame);
task.addOnSuccessListener(new OnSuccessListener<List<MLSkeleton>>() {
public void onSuccess(List<MLSkeleton> skeletons) {
// 对检测结果进行处理。
}
}).addOnFailureListener(new OnFailureListener() {
public void onFailure(Exception e) {
// 检测失败。
}
});

2.1.4 检测完成,停止分析器,释放检测资源。

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

给大家看下Demo效果:

2.2 动态视频检测

2.2.1 创建人体骨骼检测器。

MLSkeletonAnalyzer analyzer = MLSkeletonAnalyzerFactory.getInstance().getSkeletonAnalyzer();

2.2.2 开发者创建识别结果处理类“SkeletonAnalyzerTransactor”,该类实现MLAnalyzer.MLTransactor接口,使用此类中的“transactResult”方法获取检测结果并实现具体业务。

public class SkeletonAnalyzerTransactor implements MLAnalyzer.MLTransactor<MLSkeleton> {
@Override
public void transactResult(MLAnalyzer.Result<MLSkeleton> results) {
SparseArray<MLSkeleton> items = results.getAnalyseList();
// 开发者根据需要处理识别结果,例如,在此方法中进行相似度计算,从而在检测到特定姿势后进行拍照等操作。
// 需要注意,这里只对检测结果进行处理,不可调用ML Kit提供的其他检测相关接口。
// 将SparseArray封装的结果转换为List数组,以便进行相似度比较。
List<MLSkeleton> resultsList = new ArrayList<>();
for (int i = 0; i < items.size(); i++) {
resultsList.add(items.valueAt(i));
}
// 在检测结果和模板之间进行相似度比较。
// templateList表示人体骨骼模板,可以通过静态图片检测的方式生成模板,支持单人或多人模板匹配。
float result = analyzer.caluteSimilarity(resultsList, templateList);
}
@Override
public void destroy() {
// 检测结束回调方法,用于释放资源等。
}
}

2.2.3 设置识别结果处理器,实现分析器与结果处理器的绑定。

analyzer.setTransactor(new SkeletonAnalyzerTransactor());

2.2.4 创建LensEngine,该类由ML Kit SDK提供,用于捕捉相机动态视频流并传入分析器。建议设置的相机显示尺寸不小于320 * 320像素,不大于1920 * 1920像素。

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

2.2.5 开发者启用相机,读取视频流并进行识别,待检测完成,停止分析器,释放检测资源。

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

动态视频流效果:

  

基于华为HMS ML kit人体骨骼识别技术,我们能做的还有很多:

a.在体感游戏中让虚拟形象模拟真人动作,增加游戏趣味性。

b.辅助健身锻炼或康复训练时的姿势矫正。

c.在监控中检测异常行为。

更详细的开发指南参考华为开发者联盟官网:

华为开发者联盟机器学习服务开发指南

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

华为开发者联盟官网:https://developer.huawei.com/consumer/cn/hms

获取开发指导文档:https://developer.huawei.com/consumer/cn/doc/development

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

下载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/topicview?fid=18&tid=0202333916402640253

原作者:留下落叶

用华为HMS ML kit人体骨骼识别技术,Android快速实现人体姿势动作抓拍&nbsp;的更多相关文章

  1. 超简单集成华为HMS ML Kit文本识别SDK,一键实现账单号自动录入

    前言   在之前的文章<超简单集成华为HMS Core MLKit通用卡证识别SDK,一键实现各种卡绑定>中我们给大家介绍了华为HMS ML Kit通用卡证识别技术是如何通过拍照自动识别卡 ...

  2. 超简单集成 HMS ML Kit 实现最大脸微笑抓拍

    前言 如果大家对 HMS ML Kit 人脸检测功能有所了解,相信已经动手调用我们提供的接口编写自己的 APP 啦.目前就有小伙伴在调用接口的过程中反馈,不太清楚 HMS ML Kit 文档中的 ML ...

  3. 超简单集成HMS ML Kit文字超分能力,一键提升文本分辨率

    前言 大家有没有遇到过这种情况,在浏览微博或者公众号时看到一段有趣的文字,于是截图发到朋友圈想和好友分享.但是在发布图片时,软件会对图片强制进行压缩,导致图片分辨率下降,文字变得模糊难以阅读.那么有没 ...

  4. Android | 超简单集成HMS ML Kit实现最大脸微笑抓拍

    前言   如果大家对HMS ML Kit 人脸检测功能有所了解,相信已经动手调用我们提供的接口编写自己的APP啦.目前就有小伙伴在调用接口的过程中反馈,不太清楚HMS ML Kit 文档中的MLMax ...

  5. 超简单集成华为 HMS MLKit 机器学习服务:银行卡识别 SDK,一键实现银行卡绑定

    前言 小编前面几期文章分别给大家介绍了使用 HMS ML Kit SDK 实现微笑抓拍.证件照 DIY.拍照翻译的功能开发(链接见文章末尾),本次小编给大家带来的是使用 HMS 机器学习服务(ML K ...

  6. Android | 教你如何用华为HMS MLKit SDK 三十分钟在安卓上开发一个微笑抓拍神器

    Android | 只要三十分钟就可以在手机上开发一个微笑抓拍神器!!! 前言 前段时间Richard Yu在发布会上给大家介绍了华为HMS Core4.0,回顾发布会信息请戳: 华为面向全球发布HM ...

  7. Kinect视频中运用全身运动和人体测量统计学的人物识别技术

    摘要: 对于人物识别技术来说,动作和人体测量统计学对于光学差异并不敏感,甚至对于眼镜,头发,帽子的描述相当粗糙,现在的以步态为基础的识别技术都是基于对细节的精确描述和对步态周期的精确测量.这种方法需要 ...

  8. 手把手教你集成华为机器学习服务(ML Kit)人脸检测功能

    当给自己拍一张美美的自拍照时,却发现照片中自己的脸不够瘦.眼睛不够大.表情不够丰富可爱-如果此时能够一键美颜瘦脸并且添加可爱的贴纸的话,是不是很棒? 当家里的小孩观看iPad屏幕时间过长或者眼睛离屏幕 ...

  9. Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序

    Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序 引子   上期给大家介绍了如何使用如何用华为HMS MLKit SDK 三十分钟在安卓上开发一个微笑抓 ...

随机推荐

  1. 谈谈javascript的基本规范~~~~

    1.不要在同一行声明多个变量. 2.请使用===或==来比较true或false或者数值 3.使用对象字面量代替new Array这种形式 4.不要使用全局函数 5.switch语句必须带有defau ...

  2. Python基础入门知识点——深浅拷贝

    深浅拷贝 对象引用.浅拷贝.深拷贝(拓展.难点.重点) Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果 其实这个是由于共享内存导致的结果 拷贝 ...

  3. C++类和对象的封装 点和圆的案例

    主要练习 :在类中可以让另一个类作为本类的成员. 案例:判断点和圆的位置关系. 一.第一种直接方法 using namespace std; #include <iostream> cla ...

  4. docker简记

    title: docker学习简记 date: 2019-10-16 15:10:39 tags: docker Docker简记 1:Docker简介 1)出现背景 一款产品从开发到上线,从操作系统 ...

  5. CVE-2020-15778 OpenSSH命令注入漏洞复现

    一.漏洞概要 OpenSSH 8.3p1及之前版本中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令.目前绝大多数linux系统受影响. 参考链接:https://githu ...

  6. pypcap rpm制作

    1.下载地址 https://pypi.org/project/pypcap/#history 2.下载后,解压并制作rpm tar -xvf pypcap-1.2.3.tar.gz python s ...

  7. paramiko 模块 ---- python2.7

    模拟远程执行命令: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import paramiko   #设置日志记录 paramiko ...

  8. SPSSAU数据分析思维培养系列1:数据思维篇

    今天,SPSSAU给大家带来[数据分析思维培养]系列课程.主要针对第一次接触数据分析,完全不懂分析的小白用户,或者懂一些简单方法但苦于没有分析思路,不知道如何规范化分析. 本文章为SPSSAU数据分析 ...

  9. lammps-MD整体思路

    1.收敛性测试 (1)由不同尺寸模型(不同的原子数)和E的关系曲线,再确定尺寸n*n*n: 2.优化结构(nve-nvt-npt) 系综的实现方式(相关命令):https://www.cnblogs. ...

  10. Jenkins匿名用户设置

    最近自己安装配置jenkins,但是跑任务时,发现是匿名账户登录,可以在系统设置中点击如下: 2.勾选“启用安全”,“访问控制”>“安全域”选择“Jenkins专有用户数据库”,并勾选“允许用户 ...