微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决设置 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...
}

问题是我从analyze方法接收到的Image的分辨率比previewview的分辨率(宽度/高度)小很多,导致图像不太好识别。

如果我使用预览视图的位图,我基本上会得到整个屏幕图片,这对分析效果更好,但我认为这是不好的做法?

所以我的问题是:是否可以设置我上面尝试过的 ImageAnalyzer(例如 setTargetResolution)的分辨率?

或者处理此类问题的最佳方法是什么?

解决方法

如果我使用预览视图的位图,我会得到整个图片 屏幕基本上对分析效果更好,但这很糟糕 实践我假设?

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

所以我的问题是:是否可以设置分辨率 ImageAnalyzer(例如setTargetResolution)我在上面试过?

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

请问为什么需要Preview和ImageAnalysis的分辨率一样?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。