Android camera2 API中预览图像大小和捕获图像大小之间的关系是什么?

Android camera2 API中预览图像大小和捕获图像大小之间的关系是什么?,android,resolution,android-camera2,Android,Resolution,Android Camera2,我正在使用camera2 API在Android中构建一个图像处理项目。我使用TextureView获得预览屏幕,使用ImageReader获得图像帧。为了图像处理的目的,我需要在ImageReader中获得最大尺寸的帧,并且对预览帧的大小没有任何要求。因此,我分别使用以下代码设置帧的大小: StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURAT

我正在使用camera2 API在Android中构建一个图像处理项目。我使用TextureView获得预览屏幕,使用ImageReader获得图像帧。为了图像处理的目的,我需要在ImageReader中获得最大尺寸的帧,并且对预览帧的大小没有任何要求。因此,我分别使用以下代码设置帧的大小:

        StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
        imageDimension = map.getOutputSizes(SurfaceTexture.class)[0];
        texture.setDefaultBufferSize(imageDimension.getWidth(), imageDimension.getHeight());

        List<Size> outputSizes = Arrays.asList(map.getOutputSizes(sImageFormat));
        largest = Collections.max(outputSizes, new CompareSizesByArea());
        mImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(), sImageFormat, 1);
5月测试安卓设备华为P9:imageDimension为:1280*720;最大的是:3968*2976

我发现预览屏幕工作得很好,但是,onImageAvailable中捕获的图像是完全黑色的,我猜没有捕获任何内容

我尝试了两种方法来弄清楚这里发生了什么。1我将ImageReader的大小设置为imageDimension,发现捕获的图像正常。2我将预览帧的大小设置为最大,发现预览屏幕是黑色的

因此,我想知道ImageReader中捕获图像的大小是否应该小于预览帧的大小。在这种情况下,如何设置预览帧的最大分辨率


无论如何,我的目的是获得最大分辨率的帧以及流畅的预览屏幕。欢迎提出任何建议。谢谢。

理论上,两个单独输出的分辨率应该没有区别,只要您在下表中列出的多个流的分辨率保证范围内。如果您的操作分辨率高于这些保证,那么事情可能无法按预期进行


一般来说,我建议在某些设备上保持预览分辨率,如果捕获的纵横比不适合预览的纵横比,则捕获可能需要更长的时间