用华为HMS ML kit人体骨骼识别手艺,Android快速实现人体姿势动作抓拍&NBsp;

  你有没有过这种体验,摄影时对着镜头,脑子一片空白、脸色僵硬、手和脚无处安放,最后拍出来的照片很是新鲜。摄影软件中的牢固姿势抓拍功效可以辅助你:选择一个你想要的姿势模板,当你摆出同款姿势时,软件会举行自动抓拍,完善避开摄影时的尴尬。本文详细先容了华为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<T>接口,使用此类中的“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 设置识别效果处置器,实现分析器与效果处置器的绑定。

,

Allbet官网

欢迎进入Allbet官网(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

,
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
原作者:留下落叶