



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android中如何在安卓上開發(fā)一個微笑抓拍神器
1、開發(fā)準備1.1在項目級gradle里添加華為maven倉buildscript
{
repositories
{
maven
{url
'/repo/'}
}
}allprojects
{
repositories
{
maven
{
url
'/repo/'}
}}1.2在應(yīng)用級的build.gradle里面加上SDK依賴dependencies{
//
引入基礎(chǔ)SDK
implementation
'com.huawei.hms:ml-computer-vision:00'
//
引入人臉檢測能力包
implementation
'com.huawei.hms:ml-computer-vision-face-recognition-model:00'
}1.3在AndroidManifest.xml文件里面增量添加模型自動下載<manifest
<application
<meta-data
android:name="com.huawei.hms.ml.DEPENDENCY"
android:value=
"face"/>
</application></manifest>1.4在AndroidManifest.xml文件里面申請相機和存儲權(quán)限<!--相機權(quán)限--><uses-permission
android:name="android.permission.CAMERA"
/><!--使用存儲權(quán)限--><uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>2、代碼開發(fā)2.1創(chuàng)建人臉分析器,檢測到微笑后進行拍照private
MLFaceAnalyzer
analyzer;private
void
createFaceAnalyzer()
{
MLFaceAnalyzerSetting
setting
=
new
MLFaceAnalyzerSetting.Factory()
.setFeatureType(MLFaceAnalyzerSetting.TYPE_FEATURES)
.setKeyPointType(MLFaceAnalyzerSetting.TYPE_UNSUPPORT_KEYPOINTS)
.setMinFaceProportion(0.1f)
.setTracingAllowed(true)
.create();
this.analyzer
=
MLAnalyzerFactory.getInstance().getFaceAnalyzer(setting);
this.analyzer.setTransactor(new
MLAnalyzer.MLTransactor<MLFace>()
{
@Override
public
void
destroy()
{
}
@Override
public
void
transactResult(MLAnalyzer.Result<MLFace>
result)
{
SparseArray<MLFace>
faceSparseArray
=
result.getAnalyseList();
int
flag
=
0;
for
(int
i
=
0;
i
<
faceSparseArray.size();
i++)
{
MLFaceEmotion
emotion
=
faceSparseArray.valueAt(i).getEmotions();
if
(emotion.getSmilingProbability()
>
smilingPossibility)
{
flag++;
}
}
if
(flag
>
faceSparseArray.size()
*
smilingRate
&&
safeToTakePicture)
{
safeToTakePicture
=
false;
mHandler.sendEmptyMessage(TAKE_PHOTO);
}
}
});}private
void
takePhoto()
{
this.mLensEngine.photograph(null,
new
LensEngine.PhotographListener()
{
@Override
public
void
takenPhotograph(byte[]
bytes)
{
mHandler.sendEmptyMessage(STOP_PREVIEW);
Bitmap
bitmap
=
BitmapFactory.decodeByteArray(bytes,
0,
bytes.length);
saveBitmapToDisk(bitmap);
}
});}2.2創(chuàng)建視覺引擎,捕捉相機動態(tài)視頻流后傳給分析器private
void
createLensEngine()
{
Context
context
=
this.getApplicationContext();
//
Create
LensEngine
this.mLensEngine
=
new
LensEngine.Creator(context,
this.analyzer).setLensType(this.lensType)
.applyDisplayDimension(640,
480)
.applyFps(25.0f)
.enableAutomaticFocus(true)
.create();}2.3動態(tài)權(quán)限申請,掛接分析器和視覺引擎創(chuàng)建代碼@Overridepublic
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_live_face_analyse);
if
(savedInstanceState
!=
null)
{
this.lensType
=
savedInstanceState.getInt("lensType");
}
this.mPreview
=
this.findViewById(R.id.preview);
this.createFaceAnalyzer();
this.findViewById(R.id.facingSwitch).setOnClickListener(this);
//
Checking
Camera
Permissions
if
(ActivityCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)
==
PackageManager.PERMISSION_GRANTED)
{
this.createLensEngine();
}
else
{
this.requestCameraPermission();
}}
private
void
requestCameraPermission()
{
final
String[]
permissions
=
new
String[]{Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE};
if
(!ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.CAMERA))
{
ActivityCompat.requestPermissions(this,
permissions,
LiveFaceAnalyseActivity.CAMERA_PERMISSION_CODE);
return;
}}@Overridepublic
void
onRequestPermissionsResult(int
requestCode,
@NonNull
String[]
permissions,
@NonNull
int[]
grantResults)
{
if
(requestCode
!=
LiveFaceAnalyseActivity.CAMERA_PERMISSION_CODE)
{
super.onReq
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育機構(gòu)二零二五年度兼職教師聘用含知識產(chǎn)權(quán)保護合同
- 二零二五年度智慧城市項目經(jīng)理職位聘用合同
- 語文文學(xué)鑒賞能力考核題
- 新能源汽車充電樁網(wǎng)絡(luò)規(guī)劃方案書
- 新興消費市場消費者行為分析與營銷策略研究
- 企業(yè)績效評估咨詢服務(wù)協(xié)議
- 農(nóng)村資源環(huán)境保護及修復(fù)協(xié)議書
- 農(nóng)業(yè)市場推廣策略實戰(zhàn)案例分析
- 社區(qū)團購電商平臺合作合同
- 農(nóng)業(yè)合作組織規(guī)范化管理手冊
- 《影視照明技術(shù)》課件:照亮影視作品的靈魂
- 5.1人民代表大會:我國的國家權(quán)力機關(guān) 課件高中政治統(tǒng)編版必修三政治與法治
- 2025年包頭輕工職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- 2025中國中材海外科技發(fā)展有限公司校園招聘筆試參考題庫附帶答案詳解
- 2025-2030年即食麥片球行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 廣東省廣州市天河區(qū)2024-2025學(xué)年八年級(上)期末物理試卷(含答案)
- 2023河南中醫(yī)藥大學(xué)學(xué)士學(xué)位英語題
- 公安筆錄模板之詢問嫌疑人(書面?zhèn)鲉局伟舶讣?
- A-level項目介紹(課堂PPT)
- 故障診斷技術(shù)的國內(nèi)外發(fā)展現(xiàn)狀(共3頁)
- 航海計算軟件---ETA計算器
評論
0/150
提交評論