[英]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.