Android CameraX - 录制视频时进行人脸检测

7

我正在使用Android中的新库CameraX和Firebase ML Kit,每一帧都能够检测到脸部。

因此,我设置了如下的CameraX:

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

一切工作都非常流畅,现在,在我做这个的时候,我想录制一个视频。

基本上,我想在录制视频时检测人脸

我尝试过:

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

但是出现了一个错误,提示参数太多了,所以我猜那不是正确的方法。

我知道这个库仍处于测试阶段,但我想肯定有一种方法能够实现。

即使暂时没有现成的方法,还有其他方法可以在使用 Firebase ML 录制视频时实现人脸检测吗?


可能是[CameraX.bindToLifecycle()出现错误]的重复问题(https://dev59.com/clMI5IYBdhLWcg3wFXSg)。 - Link182
不是“不”,那是一个不同的错误,在不同的情况下出现,我会回答他的问题。同时,我的问题不仅仅是关于错误,还涉及实现方面的内容。 - GMX
如果你想尝试的话,可以尝试使用媒体投影API并记录屏幕...只是个人建议,我个人没有使用过ML kit。 - Pemba Tamang
请查看此链接:https://dev59.com/_FMI5IYBdhLWcg3wg7qp - Pemba Tamang
@GMX,您找到解决方案了吗? - Vaclovas Rekašius Jr.
1个回答

0

我并没有经常使用CameraX,但通常我会使用Camera 2 API和Firebase ML Kit。

要同时使用这两个API,您应该从您的预览大小ImageReader获取Image回调。在该回调中,您可以使用这些图像通过API创建一个FirebaseVisionFace,并对其进行任何操作。 使用Kotlin和协程,代码应该如下所示:

 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


1
我已经在同时使用API(图像捕获和人脸检测),并且一切正常。问题是,在此基础上,我能否录制视频? - GMX
我不了解cameraX,但API 2不允许您使用Firebase进行面部识别,因为预览未抛出“图像”对象,您可以使用预览图像阅读器或可能与videoSession一起运行的低质量阅读器(就像通常用于拍摄快照)。 - Francisco Durdin Garcia
1
我也不太清楚,但我确定可以在检测人脸的同时录制视频,我看到一些应用程序这样做,并且它们使用Firebase。 - GMX
1
我的猜测是他们不是用相机x,而是以某种方式使用了相机2。 - GMX
有关此事的任何线索吗? - qwerty421

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接