1

我正在开发用于扫描图像并处理它们的移动应用程序。我在其中使用了新的 cameraxAPI 和图像分析用例。问题是我的模型需要高分辨率图像才能工作,而且我无法获得高于 960*720 的图像。

这是我构建分析器的代码:


        HandlerThread handlerThread = new HandlerThread("ImageAnalysis");
        handlerThread.start();

        ImageAnalysisConfig config = new ImageAnalysisConfig.Builder()
                .setCallbackHandler(new Handler(handlerThread.getLooper()))
                .setTargetResolution(new Size(2000,2000))
                .setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
                .build();

        mImageAnalysis = new ImageAnalysis(config);
        mImageAnalysis.setAnalyzer(new ImageAnalyzer());

注意:虽然没有 2000*2000 分辨率,但根据文档,它应该带来最接近的更高分辨率。更新:我正在使用 HTC 欲望 12+ 和 API 26 进行测试。

4

1 回答 1

0

在我的 CameraX 示例中,我尝试根据ImageAnalysisConfig具有DisplayMetrics.TextureView

获取尺寸:

 // pull the metrics from our TextureView
 // textuewView size : height=match_parent, width=match_parent
    val metrics = DisplayMetrics().also { textureView.display.getRealMetrics(it) }
 // define the screen size
    val screenSize = Size(metrics.widthPixels, metrics.heightPixels)
    val screenAspectRatio = Rational(metrics.widthPixels, metrics.heightPixels)

设置在ImageAnalysisConfig

 val analyzerConfig = ImageAnalysisConfig.Builder().apply {
        // Use a worker thread for image analysis to prevent glitches
        val analyzerThread = HandlerThread("OCR").apply {
            start()
        }
        setCallbackHandler(Handler(analyzerThread.looper))
        // we only care about the latest image in the buffer,
        setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
        setTargetResolution(screenSize)// set target here as screen size
    }.build()

在我的示例中,我使用 firebase vision API 来分析图像帧并使用 OCR 识别文本。

我也尝试过 HTC 希望 12+ 分辨率,即 720x1440 像素作为 TargetResolution,因为我的情况很好。

这是我的应用程序代码是:https ://github.com/pranaypatel512/CameraXDemo

我希望动态分辨率可以帮助你。

于 2019-09-01T16:50:55.927 回答