我正在使用Android中带有Firebase ML Kit的新库CameraX和设备可检测到的每张面孔。
因此,我将CameraX设置为:
CameraX.bindToLifecycle(this, preview, imageCapture, faceDetectAnalyzer)
现在,所有工作都没有流程,我想录制视频。
基本上,我想在录制视频时检测人脸。
我试过了:
CameraX.bindToLifecycle(this, preview, imageCapture, faceDetectAnalyzer, videoCapture)
但是我收到一个错误消息,说参数太多,所以我猜这不是正确的方法。
我知道该库仍处于alpha状态,但我想有一种方法可以做到这一点。
即使没有喷气机,用Firebase ML录制视频时,还有另一种实现面部检测的方法吗?
最佳答案
我没有经常使用CameraX,但通常使用Camera 2 API和Firebase ML Kit。
为了同时使用这两个API,您应该从Preview Size Image
中获取ImageReader
回调。在该回调中,您可以使用该图像通过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
方法用于协程支持,则可以为https://github.com/FrangSierra/Firebase-Coroutines-Android提供战利品关于Android CameraX-录制视频时的人脸检测,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57306511/