HMS MLキット検出器na sonrisa al tomar una
12783 ワード
イントロダクション
エルKitデMachine Learning(MLKit)esノUnoデロスServicios M .
は、プエードhacer MLキット?PUEDE Resolver Duante el Desarrollo de la Aplicaciについて
ロデ・デレロレッドレスにおけるMenkit y - la便宜的なBlindaによるHorcionne FrancionesのMostrarle Las Poderosas Funciones . Capaccionadas Por Melkit顔検出 Lustros de Huawei Machine Learning Service ( MLKit )におけるPrimero , Veamos la Capacidad de Detection
ラテンアメリカ人の顔についての美学的な顔をしてください.コモseミューアデレードのs、s pueden検出器カーカスal mismo tiempo.
Consejos : Estaは、私がそうしているアンドロイドであります.
SonrisaにおけるFOOTOGRAFの機能の機能
ホイ,ユリモモスの容量についての一考察
desarrolloの準備
ロス準備AprilrollarエルキットデHuawei HMS息子同類.エル・SDKを紹介します. Agrega El RepositorioデHuawei maven al gradle de nivel de proyecto MavenのAgrega卒業生
2 .アルトボックの構築に関する一考察<研究ノート>二〇〇五年六月七四四二年六月六日
フェイシャルにおける顔の色について
el modelo se agrega al archivo androidmanifestXML en modo incremental para descarga autom len . tica エストse USA Principalmenteパラアクチュアリーは、エルmodeloです.NIE Vez - que - se - Allioritmo , El Modelo se puede descargar Autom - en Ticamente al - Port - Fu O - Re - Vu para Su Actualizaci - n
Solicita permisos de cマラy almacenamienen en el archivo androidmanifestXML
1 ) analizadorの構成式
2 ) Analizador al Analizadorに於ける二,三の研究
3)enアナライザ.SetTransaction , TransRetresult debera ser sobrescrito para procesar el contenido despu es s del reconocimiento facialフェイスコンフェースデパープメントの顔、se devuelve un nivelデコンニャンザ.Un Cierto ValorにおけるSoul Necesita El nivel de Convenanza
Creamos国連モータービジュアルのcapapar transmisionesディンは、mideデビデオdesc cをします.
Aplicaciは、デPermios Din Muros、AdjuntandoエルAnalizador yエルC
Latiples CarasのSonrisa de Captura de Capturaの実験
瞬間は、呼吸します、呼吸してください
ロストスの検出能力に関する一考察つのabre tu mente nuevasアイデアy caracterは、刺します!干し草藻類consejos Agrega Efectos装飾的なinteresantes Identificando La Ubicaciは、ロスラスゴスfaciales、como orejas、ojos、ナルビス、boca y cejasとします. 同一視法による顔の位置関係の推定 desarrollar algunas funcionesデcontrol parental basadas en la la ficicicaci di n de la edad Desallle la function i n de comdidad Light Duraci et n n de Looojos mirando la pantalla を実行しているLa Detsiciは、パトロールのためにトランデのcomandos aleatorios(como sacudir la cabeza、parpay y abrirラボカ)です. Recomendar Ofertasは、ロスUsualiasエヌFreniを得ます. <論文>パラヴェラーにおけるデスローロロの思想:ヴィオデ・エル・シティエー・フォールフォルト・デル・デラローラドールde Huawei
Link
OプエヴェVisitarnosタンビesエヌエルforoデdesarrolladores
Dev Forum
エルKitデMachine Learning(MLKit)esノUnoデロスServicios M .
は、プエードhacer MLキット?PUEDE Resolver Duante el Desarrollo de la Aplicaciについて
ロデ・デレロレッドレスにおけるMenkit y - la便宜的なBlindaによるHorcionne FrancionesのMostrarle Las Poderosas Funciones .
ラテンアメリカ人の顔についての美学的な顔をしてください.コモseミューアデレードのs、s pueden検出器カーカスal mismo tiempo.
Consejos : Estaは、私がそうしているアンドロイドであります.
SonrisaにおけるFOOTOGRAFの機能の機能
ホイ,ユリモモスの容量についての一考察
desarrolloの準備
ロス準備AprilrollarエルキットデHuawei HMS息子同類.エル・SDKを紹介します.
// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {ext.kotlin_version = "1.3.72"repositories {google()jcenter()maven { url 'https://developer.huawei.com/repo/' } // HUAWEI Maven repository}dependencies {classpath "com.android.tools.build:gradle:4.0.0"classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"classpath 'com.huawei.agconnect:agcp:1.3.1.300' // HUAWEI agcp plugin// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}}allprojects {repositories {google()jcenter()maven { url 'https://developer.huawei.com/repo/' } // HUAWEI Maven repository}}task clean(type: Delete) {delete rootProject.buildDir}
フェイシャルにおける顔の色について
dependencies{implementation 'com.huawei.hms:ml-computer-vision-face-emotion-model:1.0.4.300'implementation 'com.huawei.hms:ml-computer-vision-face-feature-model:1.0.4.300'implementation 'com.huawei.hms:ml-computer-vision-face-shape-point-model:1.0.4.300'implementation 'com.huawei.hms:ml-computer-vision-face:1.0.4.300'}
<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/MaterialTheme"><activity android:name=".face.LiveFaceAnalyseActivity" /><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
<uses-feature android:name="android.hardware.camera" /><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
ディアローロロデルcディルディゴCreando un analizador facial y tomar fotos cuando se detecte una sonrisa.
フォトス・トマドス・デッツェの『探偵』1 ) analizadorの構成式
2 ) Analizador al Analizadorに於ける二,三の研究
3)enアナライザ.SetTransaction , TransRetresult debera ser sobrescrito para procesar el contenido despu es s del reconocimiento facialフェイスコンフェースデパープメントの顔、se devuelve un nivelデコンニャンザ.Un Cierto ValorにおけるSoul Necesita El nivel de Convenanza
private var analyzer: MLFaceAnalyzer? = null
private fun createFaceAnalyzer() {
// Create a face analyzer. You can create an analyzer using the provided customized face detection parameter
// MLFaceAnalyzerSetting
val setting = MLFaceAnalyzerSetting.Factory()
.setFeatureType(MLFaceAnalyzerSetting.TYPE_FEATURES)
.setKeyPointType(MLFaceAnalyzerSetting.TYPE_UNSUPPORT_KEYPOINTS)
.setMinFaceProportion(0.1f)
.setTracingAllowed(true)
.create()
analyzer = MLAnalyzerFactory.getInstance().getFaceAnalyzer(setting)
if (detectMode == Constant.NEAREST_PEOPLE) {
val transactor =
MLMaxSizeFaceTransactor.Creator(analyzer, object : MLResultTrailer<MLFace?>() {
override fun objectCreateCallback(
itemId: Int,
obj: MLFace?
) {
overlay!!.clear()
if (obj == null) {
return
}
val faceGraphic = LocalFaceGraphic(
overlay!!,
obj,
this@LiveFaceAnalyseActivity
)
overlay!!.addGraphic(faceGraphic)
val emotion = obj.emotions
if (emotion.smilingProbability > smilingPossibility) {
safeToTakePicture = false
mHandler.sendEmptyMessage(TAKE_PHOTO)
}
}
override fun objectUpdateCallback(
var1: MLAnalyzer.Result<MLFace?>,
obj: MLFace?
) {
overlay!!.clear()
if (obj == null) {
return
}
val faceGraphic = LocalFaceGraphic(
overlay!!,
obj,
this@LiveFaceAnalyseActivity
)
overlay!!.addGraphic(faceGraphic)
val emotion = obj.emotions
if (emotion.smilingProbability > smilingPossibility && safeToTakePicture) {
safeToTakePicture = false
mHandler.sendEmptyMessage(TAKE_PHOTO)
}
}
override fun lostCallback(result: MLAnalyzer.Result<MLFace?>) {
overlay!!.clear()
}
override fun completeCallback() {
overlay!!.clear()
}
}).create()
analyzer!!.setTransactor(transactor)
} else {
analyzer!!.setTransactor(object : MLTransactor<MLFace> {
override fun destroy() {}
override fun transactResult(result: MLAnalyzer.Result<MLFace>) {
val faceSparseArray = result.analyseList
var flag = 0
for (i in 0 until faceSparseArray.size()) {
val emotion = faceSparseArray.valueAt(i).emotions
if (emotion.smilingProbability > smilingPossibility) {
flag++
}
}
if (flag > faceSparseArray.size() * smilingRate && safeToTakePicture) {
safeToTakePicture = false
mHandler.sendEmptyMessage(TAKE_PHOTO)
}
}
})
}
}
y almacenamientoを返します.private fun takePhoto() {
mLensEngine!!.photograph(null,
PhotographListener { bytes ->
mHandler.sendEmptyMessage(STOP_PREVIEW)
val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
saveBitmapToDisk(bitmap)
})
}
private fun createLensEngine() {
val context: Context = this.applicationContext
// Create LensEngine
mLensEngine = LensEngine.Creator(context, analyzer).setLensType(lensType)
.applyDisplayDimension(640, 480)
.applyFps(25.0f)
.enableAutomaticFocus(true)
.create()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (!allPermissionsGranted()) {
runtimePermissions
}
}
private val runtimePermissions: Unit
get() {
val allNeededPermissions: MutableList<String?> = ArrayList()
for (permission in requiredPermissions) {
if (!isPermissionGranted(this, permission)) {
allNeededPermissions.add(permission)
}
}
if (!allNeededPermissions.isEmpty()) {
ActivityCompat.requestPermissions(
this,
allNeededPermissions.toTypedArray(),
PERMISSION_REQUESTS
)
}
}
private fun allPermissionsGranted(): Boolean {
for (permission in requiredPermissions) {
if (!isPermissionGranted(this, permission)) {
return false
}
}
return true
}
private val requiredPermissions: Array<String?>
get() = try {
val info = this.packageManager
.getPackageInfo(this.packageName, PackageManager.GET_PERMISSIONS)
val ps = info.requestedPermissions
if (ps != null && ps.size > 0) {
ps
} else {
arrayOfNulls(0)
}
} catch (e: RuntimeException) {
throw e
} catch (e: Exception) {
arrayOfNulls(0)
}
override fun onRequestPermissionsResult(
requestCode: Int, permissions: Array<String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode != PERMISSION_REQUESTS) {
return
}
var isNeedShowDiag = false
for (i in permissions.indices) {
if (permissions[i] == Manifest.permission.READ_EXTERNAL_STORAGE && grantResults[i] != PackageManager.PERMISSION_GRANTED
) {
// If permissions aren't satisfied, show dialog.
isNeedShowDiag = true
}
}
if (isNeedShowDiag && !ActivityCompat.shouldShowRequestPermissionRationale(
this,
Manifest.permission.CALL_PHONE
)
) {
val dialog: AlertDialog = AlertDialog.Builder(this)
.setMessage(getString(R.string.camera_permission_rationale))
.setPositiveButton(
getString(R.string.settings)
) { dialog, which ->
val intent =
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.data = Uri.parse("package:$packageName")
startActivityForResult(intent, 200)
startActivity(intent)
}
.setNegativeButton(
getString(R.string.cancel),
DialogInterface.OnClickListener { dialog, which -> finish() }).create()
dialog.show()
}
}
結論Latiples CarasのSonrisa de Captura de Capturaの実験
瞬間は、呼吸します、呼吸してください
ロストスの検出能力に関する一考察つのabre tu mente nuevasアイデアy caracterは、刺します!干し草藻類consejos
Link
OプエヴェVisitarnosタンビesエヌエルforoデdesarrolladores
Dev Forum
Reference
この問題について(HMS MLキット検出器na sonrisa al tomar una), 我々は、より多くの情報をここで見つけました https://dev.to/huaweidevslatam/hms-ml-kit-detecta-una-sonrisa-al-tomar-una-fotografia-1e4kテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol