android - 设置 ImageAnalyzer 和 PreviewView 的宽度和高度相同

标签 android image-processing android-imageview android-camerax google-mlkit

我有一个简单的设置:

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...
}
问题是我从分析方法收到的图像分辨率比预览 View 分辨率(宽度/高度)小得多,因此导致图像不能很好地识别。
如果我使用预览 View 的位图,我基本上会得到整个屏幕图片,这对于分析来说效果更好,但我认为这是不好的做法吗?
所以我的问题是:是否可以设置我上面尝试过的 ImageAnalyzer(例如 setTargetResolution)的分辨率?
或者处理此类问题的最佳方法是什么?

最佳答案

If I use the bitmap of the previewview I get the entire pic of the screen basically which works better for the analyzation, but thats bad practice I assume?


是的,这在性能方面是不好的做法,因为缓冲区复制非常昂贵。

So my question is: Is it possible to set the resolution of the ImageAnalyzer (eg setTargetResolution) I tried above?


如果您例如,在某些设备上是可能的将两个分辨率都设置为 1080p。但是,不能保证它可以在任何地方使用,因为相机硬件可能不支持它。此外,根据您的使用场景,高分辨率图像分析也可能是一种不好的做法,因为分析通常不需要如此高分辨率。
请问为什么需要Preview和ImageAnalysis的分辨率一样?

关于android - 设置 ImageAnalyzer 和 PreviewView 的宽度和高度相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67361104/

相关文章:

android - 适用于 Android 的等距游戏引擎

python - 如何更改 2D 图像的 y 轴?

android - 保存在 ImageView 中时,从自定义相机拍摄的图像会被拉伸(stretch)

Java String-如何在android中获取包名称的一部分?

java - 纹理未绘制在 Box2d Body 上

python - 使用 Python 自动识别字体

iphone - 裁剪图像后处理像素时崩溃

android - 当点击一个按钮在android中顺时针旋转图像

android - RecyclerView 和 Picasso 图像在滚动后消失

android - 从移动应用程序进行错误报告/记录的最佳工具