總是被女朋友吐槽拍照技術不佳?是不是腦海中,已經浮現出手牽手跟女友去迪士尼游玩時,女友開心的讓你給他拍照,殊不知不給力的你,拍出的照片不僅臉大腿短不對焦,還一米五既視感,瞬間惹惱女友,
這點小場面怎么會難倒我們的程式員?身為一名程式員,產品經理的需求都可以滿足,女友的需求還不分分鐘搞定?快速打造一款專屬她的“美顏相機”,輕松實作瘦臉、大眼等功能,讓你的女朋友隨心操作,瞬間實作美顏效果,

“美顏相機”到底是如何開發的?原理又是什么?
輕輕一點就能自動檢測到照片中的人臉,然后放大眼睛加瘦臉,實作美顏的效果,這到底是如何實作的呢?
原理很簡單,利用華為機器學習服務中的人臉檢測功能,對人臉多達855個關鍵點進行檢測,回傳人臉輪廓、眉毛、眼睛、鼻子、嘴巴、耳朵等部位的坐標以及人臉偏轉角度等資訊,這樣我們就可以根據這些資訊快速構建一款“美顏相機”,對人臉進行美化,甚至可以在臉上添加一些有趣的元素,比如可愛的貼紙等,增加圖片的趣味性,
10分鐘get“美顏相機”開發教程!
1. 開發準備
詳細的準備步驟可以參考華為開發者聯盟,這里列舉關鍵的開發步驟,
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.android.application'
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吧!

怎么樣,你學會了嗎?快速搞定一款女朋友限定版“美顏相機”,不僅可以實作大眼瘦臉功能,你也可以添加可愛小貼紙功能,微笑抓拍功能等等, 這些都可以通過接入機器學習服務快速實作!如果你也想在女朋友面前成功秀一把,請下載GitHub原始碼,
>>訪問華為開發者聯盟官網,了解更多相關內容
>>獲取開發指導檔案
>>華為移動服務開源倉庫地址:GitHub、Gitee
關注我們,第一時間了解華為移動服務最新技術資訊~
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/261415.html
標籤:其他
