如何在MLKit vision-quickstart中调整分辨率提升Aztec码检测速度?
解决MLKit vision-quickstart中Aztec码识别慢的问题:调整输入图像分辨率
一、定位相机分辨率配置代码
vision-quickstart项目中,相机输入分辨率的配置逻辑分两种情况:
- 使用CameraX(新版示例):查找
BarcodeScanningActivity或CameraXPreviewHelper类中的相机用例配置代码 - 使用旧版CameraSource API:查找初始化
CameraSource的代码块,通常在扫描处理器类或对应Activity中
二、修改分辨率参数
1. CameraX配置方案
在设置ImageAnalysis或Preview用例时,直接指定高分辨率参数:
// 配置ImageAnalysis(MLKit条码分析依赖此用例) val imageAnalysis = ImageAnalysis.Builder() .setTargetResolution(Size(1920, 1080)) // 设置1080P分辨率 .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) // 只处理最新帧,减少延迟 .build() // 同步调整Preview分辨率保持一致 val preview = Preview.Builder() .setTargetResolution(Size(1920, 1080)) .build()
如果不确定设备支持的分辨率,可通过CameraManager获取设备支持的分辨率列表,优先选择接近1920x1080的选项。
2. 旧版CameraSource API配置方案
初始化CameraSource时直接设置预览分辨率:
CameraSource cameraSource = new CameraSource.Builder(context, detector) .setRequestedPreviewSize(1920, 1080) // 指定高分辨率预览 .setRequestedFps(30.0f) // 维持30帧帧率,避免卡顿 .build();
三、额外优化建议
- 缩小检测区域:若Aztec码在火车票固定位置,设置MLKit的检测兴趣区域,减少计算范围:
// 示例:设置检测区域为屏幕中心1/2范围 Rect roi = new Rect( previewWidth / 4, previewHeight / 4, previewWidth * 3 / 4, previewHeight * 3 / 4 ); BarcodeScannerOptions options = new BarcodeScannerOptions.Builder() .setBarcodeFormats(Barcode.FORMAT_AZTEC) // 仅检测Aztec码,排除其他格式 .setDetectorOptions(new DetectorOptions.Builder() .setRegionOfInterest(roi) .build()) .build();
- 开启硬件加速:在AndroidManifest.xml对应Activity中添加硬件加速配置:
<activity android:name=".BarcodeScanningActivity" android:hardwareAccelerated="true" />
内容的提问来源于stack exchange,提问作者swemaz
相关产品推荐
相关产品推荐

