Проблема с интеграцией CameraX с пользовательской моделью MLKit - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь интегрировать CameraX с MLKit, используя пользовательскую модель. Проблема, с которой я сталкиваюсь, заключается в попытке использовать ProxyImage, который я получаю от обратного вызова ImageAnalysis, и использовать эти данные в MLKit. Ранее с Camera2 я манипулировал растровым изображением, которое было на SurfaceView. Я могу получить растровое изображение, создав FirebaseVisionImage, но я хочу избежать манипулирования растровыми изображениями в каждом кадре, который я получаю обратно. Это очень дорогое удовольствие (Мы используем полноэкранный предварительный просмотр камеры), потому что наша пользовательская модель должна принимать квадратное изображение. Вот что у меня сейчас:

 val preview = Preview.Builder().apply {
        setTargetResolution(screenSize)
        setTargetRotation(viewFinder.display.rotation)
    }.build()
    preview.previewSurfaceProvider = viewFinder.previewSurfaceProvider

    val imageAnalysis = ImageAnalysis.Builder()
            .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
            .setTargetAspectRatio(AspectRatio.RATIO_16_9)
            .build()

    imageAnalysis.setAnalyzer(executor,
            ImageAnalysis.Analyzer {imageProxy ->
                \\DO image manipulation here
            })

    val cameraSelector = CameraSelector.Builder()
            .requireLensFacing(CameraSelector.LENS_FACING_BACK)
            .build()

    cameraProviderFuture.addListener(Runnable {
        val cameraProvider = cameraProviderFuture.get()

        cameraProvider.bindToLifecycle(
                requireActivity(),
                cameraSelector,
                preview,
                imageAnalysis
        )
    }, executor)
...