【问题标题】:Why is zoom implemented differently in Camera2 API?为什么在 Camera2 API 中缩放的实现方式不同?
【发布时间】:2018-03-15 00:29:08
【问题描述】:

在我的 Android 应用程序中,我正在尝试使用 Camera2 API 实现相机缩放。有很多关于如何使用 Camera2 API 实现缩放的示例。 Zoom Camera2 Preview using TextureView 提到了一个这样的例子。这是基本代码sn-p:

float maxZoom = characteristics.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
currentZoom = adjustZoom(currentZoom, maxZoom);
Rect m = characteristics.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE);
Rect m1 = cropRectangleBasedOnZoom(m1, curZoom);
previewRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, m1);
...

这似乎有效。但是,旧的 Camera1 API 有一个简单的方法来设置缩放值。为什么必须通过 Camera2 API 中调整区域的额外逻辑? Camera2 逻辑是否会产生更好的图片质量?

另外,有没有办法获得最大光学变焦的值?问候。

【问题讨论】:

    标签: android


    【解决方案1】:

    使用 Camera2,设备可以支持离轴缩放,这比旧的 API 设计更灵活。也就是说,并非所有设备都支持该功能,您可以通过SCALER_CROPPING_TYPE 检查设备是否支持。

    一般来说,camera2 会尝试将所有坐标与传感器有源阵列联系起来,因此始终清楚正在考虑传感器的哪一部分,因此这是一个一致性问题。

    裁剪区域不支持光学缩放;这完全是关于数码变焦。如果设备支持光学变焦,则通过AVAILABLE_FOCAL_LENGTHSLENS_FOCAL_LENGTH

    【讨论】:

      猜你喜欢
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多