簡體   English   中英

Android CameraX - 錄制視頻時進行人臉檢測

[英]Android CameraX - face detection while recording video

我在Android中使用帶有Firebase ML Kit的新庫CameraX,並在設備可以的每一幀檢測面部。

所以我像這樣設置CameraX:

CameraX.bindToLifecycle(this, preview, imageCapture, faceDetectAnalyzer)

所有工作都無法工作,現在,當我這樣做時,我想錄制視頻。

所以基本上我想在錄制視頻時檢測面部

我試過了:

CameraX.bindToLifecycle(this, preview, imageCapture, faceDetectAnalyzer, videoCapture)

但我收到一個錯誤,說參數太多,所以我猜這不是正確的方法。

我知道這個庫仍然在alpha中,但我想有辦法做到這一點。

即使沒有jet,在使用Firebase ML錄制視頻時實現面部檢測的另一種方法是什么?

我沒有經常使用CameraX,但我通常使用Camera 2 API和Firebase ML Kit。

要同時使用兩個API,您應該從預覽大小ImageReader獲取Image回調。 在該回調上,您可以使用該圖像通過API創建FirebaseVisionFace ,並隨意執行任何操作。 使用Kotlin和Coroutines它應該看起來像這樣:

 private val options: FirebaseVisionFaceDetectorOptions = FirebaseVisionFaceDetectorOptions.Builder()
    .setContourMode(FirebaseVisionFaceDetectorOptions.ALL_CONTOURS)
    .build()

val detector = FirebaseVision.getInstance().getVisionFaceDetector(options)

suspend fun processImage(image: Image): FirebaseVisionFace {
    val metadata = FirebaseVisionImageMetadata.Builder()
        .setWidth(image.width) // 480x360 is typically sufficient for image recognition
        .setHeight(image.height)
        .setFormat(FirebaseVisionImageMetadata.IMAGE_FORMAT_NV21)
        .build()

    val visionImage = FirebaseVisionImage.fromMediaImage(image)
    val firebaseVisionFace = detector.detectInImage(visionImage).await()

    return firebaseVisionFace
}

如果你想使用await方法獲得Coroutine支持你可以給https://github.com/FrangSierra/Firebase-Coroutines-Android一個戰利品

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM