ImageAnalysis.Analyzer CameraX снижает частоту кадров при преобразовании в растровое изображение - PullRequest
0 голосов
/ 05 августа 2020

Я использую CameraX ImageAnalysis.Analyzer для обнаружения лиц. Однако размер объекта Image слишком велик для использования FirebaseVisionImage.fromMediaImage, поэтому я попытался преобразовать изображение в растровое изображение и изменить масштаб и повернуть его в зависимости от поворота камеры. Производительность по-прежнему огромна, это из-за операции масштабирования Bitmap.

FirebaseVisionImage.fromMediaImage требует 120 мс для преобразования изображения 640x480. FirebaseVisionImage.fromBitmap требуется 30 мс для преобразования изображения 640x480 (но с неправильным вращением), поэтому нет детекции лица. FirebaseVisionImage.fromBitmap с масштабированием 90 мс для преобразования изображения 480x360.

Мой вопрос в том, как оптимизировать этот процесс, чтобы я мог получить растровое изображение 480x360 и улучшить производительность.

Я использовал эту следующую реализацию для преобразовать изображение в растровое.

https://github.com/xizhang/camerax-gpuimage/blob/master/app/src/main/java/com/appinmotion/gpuimage/YuvToRgbConverter.kt

Мой код.

        Bitmap bitmapImage2 = Bitmap.createBitmap(
                imageX.getWidth(), imageX.getHeight(), Bitmap.Config.ARGB_8888);
        ByteBuffer byteBuffer = converter.yuvToRgb(imageX, bitmapImage2);

        bitmapImage2 = BitmapUtils.rotateScaleBitmap(bitmapImage2, rotation, 1, 480);
        FirebaseVisionImage image =
                FirebaseVisionImage.fromBitmap(bitmapImage2);
        Log.d("myApp", "" + (System.currentTimeMillis() - start));
...