使用CameraX时,前置摄像头的Facebase MLKit面部检测失败

时间:2019-10-18 16:20:18

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

我正在尝试使用Embed Without SigningFirebase MLKit进行面部检测。使用后置摄像头时,它工作正常,但是当我尝试使用前置摄像头时,它什么也没检测到:

CameraX ImageAnalysis

我在配备Android 10的诺基亚8.1上进行了测试。我尝试了https://github.com/firebase/quickstart-android/tree/master/mlkit,它不使用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) ,并且可以与前置摄像头配合使用。

1 个答案:

答案 0 :(得分:0)

通过将lensfacing的{​​{1}}设置为ImageAnalysis来解决此问题:

CameraX.LensFacing.FRONT