用華爲HMS ML kit人體骨骼識別技術,Android快速實現人體姿式動做抓拍

你有沒有過這種體驗,拍照時對着鏡頭,腦子一片空白、表情僵硬、手和腳無處安放,最後拍出來的照片非常奇怪。拍照軟件中的固定姿式抓拍功能能夠幫助你:選擇一個你想要的姿式模板,當你擺出同款姿式時,軟件會進行自動抓拍,完美避開拍照時的尷尬。本文詳細介紹了華爲HMS ML kit人體骨骼識別技術的集成過程,該技術精準定位了14個骨骼點,能夠輕鬆實現固定姿式抓拍。java

人體骨骼檢測功能開發實戰

作了一個視頻流骨骼識別小demo,作一次實戰演練,android

Github demo源碼:https://github.com/HMS-Core/hms-ml-demo/tree/master/Skeleton-Cameragit

1. 開發前準備

您須要完成必要的開發準備工做,同時請確保您的工程中已經配置HMS Core SDK的Maven倉地址,而且完成了本服務的SDK集成。github

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 建立人體骨骼檢測器。

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

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.3 設置識別結果處理器,實現分析器與結果處理器的綁定。

analyzer.setTransactor(new SkeletonAnalyzerTransactor());

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.5 開發者啓用相機,讀取視頻流並進行識別,待檢測完成,中止分析器,釋放檢測資源。

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
做者:留下落葉學習

相關文章
相關標籤/搜索