【发布时间】:2021-07-25 09:40:38
【问题描述】:
我有一个简单的设置:
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)?
或者处理此类问题的最佳方法是什么?
【问题讨论】:
标签: android image-processing android-imageview android-camerax google-mlkit