【问题标题】:Facebase MLKit face detection failed with front camera when using CameraX使用 CameraX 时,前置摄像头的 Facebase MLKit 人脸检测失败
【发布时间】:2020-02-15 16:19:01
【问题描述】:

我正在尝试使用Firebase MLKitCameraX ImageAnalysis 实现人脸检测。使用后置摄像头时效果很好,但是当我尝试使用前置摄像头时,它什么也没检测到:

val config = PreviewConfig.Builder()
        .setLensFacing(CameraX.LensFacing.FRONT)
        .build()
val previewUseCase = Preview(config)
previewUseCase.setOnPreviewOutputUpdateListener { previewOutput ->
    viewFinder.post {
        removeView(viewFinder)
        addView(viewFinder, 0)
        viewFinder.surfaceTexture = previewOutput.surfaceTexture
        updateTransform(previewOutput)
    }
}

val highAccuracyOpts = FirebaseVisionFaceDetectorOptions.Builder()
    .setPerformanceMode(FirebaseVisionFaceDetectorOptions.ACCURATE)
    .build()
val detector = FirebaseVision.getInstance().getVisionFaceDetector(highAccuracyOpts)
val imageAnalysisConfig = ImageAnalysisConfig.Builder()
    .setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
    .build()
val imageAnalysis = ImageAnalysis(imageAnalysisConfig).apply {
    setAnalyzer(
        Executors.newSingleThreadExecutor(),
        ImageAnalysis.Analyzer { image, rotationDegrees ->
            if (image.image != null && isBusy.compareAndSet(false, true)) {
                val visionImage = FirebaseVisionImage.fromMediaImage(image.image!!, degreesToFirebaseRotation(rotationDegrees))
                detector.detectInImage(visionImage)
                    .addOnSuccessListener { faces ->
                        // faces.size always zero when using front camera
                        Timber.d("${faces.size}")
                        isBusy.set(false)
                    }
                    .addOnFailureListener { error ->
                        Timber.d("$error")
                    }
            }
        })
}

CameraX.bindToLifecycle(lifecycleOwner, previewUseCase, imageAnalysis)

我在装有 Android 10 的诺基亚 8.1 上进行了测试。我尝试了https://github.com/firebase/quickstart-android/tree/master/mlkit,它不使用CameraX,它与前置摄像头配合良好。

【问题讨论】:

    标签: android firebase face-detection firebase-mlkit android-camerax


    【解决方案1】:

    通过将lensfacingImageAnalysis 设置为CameraX.LensFacing.FRONT 来解决它:

    val imageAnalysisConfig = ImageAnalysisConfig.Builder()
        .setLensFacing(CameraX.LensFacing.FRONT)
        .setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
        .build()
    

    【讨论】:

      猜你喜欢
      • 2020-11-12
      • 2018-01-23
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 2019-11-02
      • 2021-08-27
      • 2021-01-22
      相关资源
      最近更新 更多