В этом коротком руководстве вы узнаете, как получить количество лиц из растрового изображения с помощью FirebaseVision и Kotlin. FirebaseVisionFaceDetector поддерживает обнаружение лиц как на устройстве, так и в облаке.

Если вы хотите узнать, как получить количество лиц в iOS, Следите за этим



Добавьте Firebase в свой Android-проект (подробнее)

  1. Создать проект Firebase
  2. Зарегистрируйте свое приложение в Firebase
  3. Добавить файл конфигурации Firebase
  4. Добавьте Firebase SDK в свое приложение

Инициализировать FirebaseApp и FirebaseVision

  • Добавьте зависимости для Android-библиотек ML Kit в файл Gradle вашего модуля (уровня приложения) (обычно app/build.gradle):
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

dependencies {
  // ...

  implementation 'com.google.firebase:firebase-ml-vision:24.0.1'
  implementation 'com.google.firebase:firebase-ml-vision-image-label-model:19.0.0'
}
  • Добавьте следующее объявление в AndroidManifest.xml файл вашего приложения:
<application ...>
  ...
  <meta-data
      android:name="com.google.firebase.ml.vision.DEPENDENCIES"
      android:value="label" />
  <!-- To use multiple models: android:value="label,model2,model3" -->
</application>
  • Инициализируйте FirebaseApp на своем MainActivity.tk:
class MainActivity : AppCompatActivity() {

    private lateinit var encService: EncryptionManager

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //Firebase init
        FirebaseApp.initializeApp(this.applicationContext)

        ...
    }
}

FaceCountManager

Напишите класс Singleton и метод для получения количества лиц, передав Bitmap в качестве параметра.

import android.graphics.Bitmap
import android.util.Log
import com.google.firebase.ml.vision.FirebaseVision
import com.google.firebase.ml.vision.common.FirebaseVisionImage
import com.google.firebase.ml.vision.face.FirebaseVisionFaceDetector
import com.google.firebase.ml.vision.face.FirebaseVisionFaceDetectorOptions

object FaceCountManager {
    private val options = FirebaseVisionFaceDetectorOptions.Builder()
        .setClassificationMode(FirebaseVisionFaceDetectorOptions.ALL_CLASSIFICATIONS)
        .setLandmarkMode(FirebaseVisionFaceDetectorOptions.NO_LANDMARKS)
        .build()

    private val detector: FirebaseVisionFaceDetector =
        FirebaseVision.getInstance().getVisionFaceDetector(options)

    fun detectFaceCount(bitmap: Bitmap, callback: (Int) -> Unit) {
        val image = FirebaseVisionImage.fromBitmap(bitmap)
        detector.detectInImage(image).addOnSuccessListener { results ->
            callback(results.size)
        }.addOnFailureListener { e ->
            Log.e("FaceCountManager", e.localizedMessage ?: "Image Count Error")
            callback(0)
        }
    }
}

использование

Вы можете вызвать вышеупомянутый класс с растровым изображением, как показано ниже:

val bitmap: Bitmap// Get your bitmap image.
FaceCountManager.detectFaceCount(bitmap) { faceCount ->
    println("Facecount: $faceCount")    
}

Из этого поста мы узнали, как получить количество лиц в заданном растровом изображении с помощью FirebaseVision и Kotlin.

Если вы хотите узнать, как получить количество лиц в iOS, Следите за этим



Спасибо за чтение.