android - 设置 ImageAnalyzer 和 PreviewView 的宽高相同
问题描述
我有一个简单的设置:
preview = new Preview.Builder().build();
preview.setSurfaceProvider(mPreviewView.createSurfaceProvider());
imageAnalysis = new ImageAnalysis.Builder().setTargetResolution(new Size(mPreviewView.getWidth(),mPreviewView.getHeight())).build();
imageAnalysis.setAnalyzer(executor, new PaperImageAnalyser());
图像分析仪:
@SuppressLint("UnsafeExperimentalUsageError")
@Override
public void analyze(@NonNull ImageProxy imageProxy) {
Image mediaImage = imageProxy.getImage();
if (mediaImage != null) {
InputImage image = InputImage.fromMediaImage(mediaImage, imageProxy.getImageInfo().getRotationDegrees());
Log.e("madieaimage",mediaImage.getHeight() + " and with" + mediaImage.getWidth()); //480 and with640
Log.e("inputimage", image.getHeight() + " and width" + image.getWidth()); //480 and width640
Log.e("imageproxy", image.getHeight() + " and width" + image.getWidth()); //480 and width640
Log.e("cameraimp previewview ", CameraImp.mPreviewView.getBitmap().getHeight() + " and widht" + CameraImp.mPreviewView.getBitmap().getWidth()); //2145 and widht1080
image = InputImage.fromBitmap(CameraImp.mPreviewView.getBitmap(),0); //analyzes much better cause resolution is set but its not good practise right?
}
//analyze with image...
}
问题是我从分析方法收到的图像的分辨率比预览视图的分辨率(宽度/高度)小得多,因此导致图像不能很好地识别。
如果我使用预览视图的位图,我基本上会得到屏幕的整个图片,这对分析效果更好,但我认为这是不好的做法?
所以我的问题是:是否可以设置我上面尝试过的 ImageAnalyzer 的分辨率(例如 setTargetResolution)?
或者处理此类问题的最佳方法是什么?
解决方案
如果我使用预览视图的位图,我基本上会得到屏幕的整个图片,这对分析效果更好,但我认为这是不好的做法?
是的,这在性能方面是不好的做法,因为缓冲区复制非常昂贵。
所以我的问题是:是否可以设置我上面尝试过的 ImageAnalyzer 的分辨率(例如 setTargetResolution)?
如果您将两种分辨率都设置为 1080p,则在某些设备上是可能的。但是,不能保证它可以在任何地方工作,因为相机硬件可能不支持它。此外,根据您的使用场景,高分辨率图像分析也可能是一种不好的做法,因为分析通常不需要如此高分辨率。
请问为什么需要Preview和ImageAnalysis的分辨率一样?
推荐阅读
- excel - 将具有定义名称的列剪切并粘贴到新工作表的最佳方法是什么,为什么我的代码不起作用?
- python - 如何获取子类的文件名?
- angular - 使用 primeNG turbo 表进行两级行扩展
- puppet - puppet 模块代码中 puppet hiera() 和 lookup() 的区别
- rxjs - RxJS - 连接并合并两个可观察对象
- function - Rust 中的函数原型是什么?
- c# - 正则表达式至少需要 6 位数字,但数字可以在任何地方
- javascript - 如何使用 JavaScript 中的 JSON 数组中的数据为 chartJS 图形创建自定义工具提示?
- javascript - Parsley.js 中关于 data-parsley-`constraint`-message 的说明
- javascript - 嵌套的 .unionWith,每个级别有一个唯一的合并