美顏神器——快速集成華為HMS ML Kit人臉檢測實現大眼瘦臉


前言

生活中遇到難忘美好的瞬間,小編總是忍不住用拍照的方式來留住它,相信大家也和我一樣。但我們大多數人都不是專業的攝影師或者模特,光線沒選好、角度不對等等原因,導致對照片的自己不滿意,該怎么辦呢?這時如果手機里有個圖片處理app,輕輕一點就能自動檢測到照片中的人臉,然后放大眼睛加瘦臉,輕松幫我們實現美顏的效果,讓美美的自己出現在保存美好記憶的照片中,是不是很棒?於是小編上網搜索解決辦法,發現華為HMS ML Kit提供了人臉檢測服務,集成這個服務后各種安卓機型都可以方便地實現照片美化,還原你的美麗!

應用場景

華為HMS ML Kit人臉檢測服務對人臉多達855個關鍵點進行檢測,返回人臉輪廓、眉毛、眼睛、鼻子、嘴巴、耳朵等部位的坐標以及人臉偏轉角度等信息。集成人臉檢測服務后開發者可以根據這些信息快速構建人臉美化的應用,或者在臉上加一些有趣的元素,增加圖片的趣味性。

除了這個強大的功能外,人臉檢測服務還可以識別人臉中包括眼睛是否睜開、是否戴眼鏡或帽子、性別、年齡、是否有胡子等特征,集成這個功能后,可以實現比如parent control的應用,防止小朋友眼睛距離屏幕過近或看屏幕時間過長。

此外,人臉檢測服務可以識別人臉多達七種表情,包括微笑、無表情、憤怒、厭惡、驚恐、悲傷和驚訝,這個功能就可以實現比如微笑抓拍這樣有趣的應用。
在這里插入圖片描述

上面這么多的能力,開發者可以按需集成。並且人臉檢測服務支持圖像和視頻流檢測,人臉跨幀跟蹤,以及同時檢測多張人臉,可以說是把小編能想到的能力全都具備了,真強大!下面就跟着小編一起來看看怎么集成HMS ML Kit人臉檢測能力來實現瘦臉大眼吧。

開發實戰

1. 開發准備

詳細的准備步驟可以參考華為開發者聯盟:

https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-process-4

這里列舉關鍵的開發步驟。

1.1 項目級gradle里配置Maven倉地址

buildscript {
    repositories {
            ...
        maven {url 'https://developer.huawei.com/repo/'}
    }
}
 dependencies {
                              ...
        classpath 'com.huawei.agconnect:agcp:1.3.1.300'
    }
allprojects {
    repositories {
            ...
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

1.2 文件頭增加配置
集成SDK后,在文件頭添加配置

 apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'

1.3 應用級gradle里配置SDK依賴

dependencies{ 
    // 引入基礎SDK
    implementation 'com.huawei.hms:ml-computer-vision-face:2.0.1.300'
    // 引入人臉輪廓+關鍵點檢測模型包
    implementation 'com.huawei.hms:ml-computer-vision-face-shape-point-model:2.0.1.300'
    // 引入表情檢測模型包
    implementation 'com.huawei.hms:ml-computer-vision-face-emotion-model:2.0.1.300'
    // 引入特征檢測模型包
    implementation 'com.huawei.hms:ml-computer-vision-face-feature-model:2.0.1.300'
}

}
1.4 將以下語句添加到AndroidManifest.xml文件中,用於自動更新機器學習模型

<manifest
    ...
    <meta-data
        android:name="com.huawei.hms.ml.DEPENDENCY" 
        android:value= "face"/>
    ...
</manifest>

1.5 申請攝像頭權限

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

2. 代碼開發

2.1 使用默認參數配置,創建人臉分析器

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

2.2 通過android.graphics.Bitmap創建MLFrame對象用於分析器檢測圖片

MLFrame frame = MLFrame.fromBitmap(bitmap);

2.3 調用“asyncAnalyseFrame”方法進行人臉檢測

Task<List<MLFace>> task = analyzer.asyncAnalyseFrame(frame);
task.addOnSuccessListener(new OnSuccessListener<List<MLFace>>() {
     @Override
     public void onSuccess(List<MLFace> faces) {
         // 檢測成功,獲取臉部關鍵點信息。
     }
 }).addOnFailureListener(new OnFailureListener() {
     @Override
     public void onFailure(Exception e) {
         // 檢測失敗。
    }
 });

2.4 通過進度條進行不同程度的大眼瘦臉處理。分別調用magnifyEye方法和smallFaceMesh方法實現大眼算法和瘦臉算法

private SeekBar.OnSeekBarChangeListener onSeekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        switch (seekBar.getId()) {
            case R.id.seekbareye: // 當大眼進度條變化時,…
            case R.id.seekbarface: // 當瘦臉進度條變化時,…
        }
    }
}

2.5 檢測完成,釋放分析器

try {
    if (analyzer != null) {
        analyzer.stop();
    }
} catch (IOException e) {
    Log.e(TAG, "e=" + e.getMessage());
}

Demo效果

下面這個demo展示了大眼瘦臉的效果,怎么樣,是不是很方便?
在這里插入圖片描述

Github地址

您可以在Github上獲取更詳細的源碼:https://github.com/HMS-Core/hms-ml-demo/tree/master/BeautyCamera

更詳細的開發指南參考華為開發者聯盟官網

https://developer.huawei.com/consumer/cn/hms/huawei-mlkit


原文鏈接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0203360642386400907&fid=18
作者:留下落葉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM