你有没有过这种体验,拍照时对着镜头,脑子一片空白、表情僵硬、手和脚无处安放,最后拍出来的照片非常奇怪。拍照软件中的固定姿式抓拍功能能够帮助你:选择一个你想要的姿式模板,当你摆出同款姿式时,软件会进行自动抓拍,完美避开拍照时的尴尬。本文详细介绍了华为HMS ML kit人体骨骼识别技术的集成过程,该技术精准定位了14个骨骼点,能够轻松实现固定姿式抓拍。java
作了一个视频流骨骼识别小demo,作一次实战演练,android
Github demo源码:https://github.com/HMS-Core/hms-ml-demo/tree/master/Skeleton-Cameragit
您须要完成必要的开发准备工做,同时请确保您的工程中已经配置HMS Core SDK的Maven仓地址,而且完成了本服务的SDK集成。github
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/' } } }
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' }
MLSkeletonAnalyzer analyzer = MLSkeletonAnalyzerFactory.getInstance().getSkeletonAnalyzer();
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() { // 检测结束回调方法,用于释放资源等。 } }
analyzer.setTransactor(new SkeletonAnalyzerTransactor());
// Create LensEngine. LensEngine lensEngine = new LensEngine.Creator(getApplicationContext(), analyzer) .setLensType(LensEngine.BACK_LENS) .applyDisplayDimension(1280, 720) .applyFps(20.0f) .enableAutomaticFocus(true) .create();
if (analyzer != null) { try { analyzer.stop(); } catch (IOException e) { // 异常处理。 } } if (lensEngine != null) { lensEngine.release(); }
动态视频流效果:数组
基于华为HMS ML kit人体骨骼识别技术,咱们能作的还有不少:app
a.在体感游戏中让虚拟形象模拟真人动做,增长游戏趣味性。
b.辅助健身锻炼或康复训练时的姿式矫正。
c.在监控中检测异常行为。机器学习
华为开发者联盟机器学习服务开发指南maven
欲了解更多详情,请参阅:
华为开发者联盟官网: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/hms-ml-demo/tree/master/Skeleton-Camera
解决集成问题请到Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newestide
原文连接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202333916402640253&fid=18
做者:留下落叶学习