第39讲 通过zoomratio控制zoom缩放 -凯发k8手机登录

本讲是android camera专题系列的第39讲,我们介绍android camera2 api专题的通过zoom ratio控制zoom缩放。

更多资源:

资源 描述
在线课程
知识星球 星球名称:深入浅出android camera
星球id: 17296815
wechat 极客笔记圈

为什么要在api level 30引入zoom ratio来控制zoom

  1. crop region都是整数,zoom精度控制不够
    • 相比android.scaler.cropregion控制zoom,zoom ratio方式的精度更高
  2. crop region无法缩小到1倍以下
    • 通过zoom ratio可以zoom到1倍以下(超广角camera),android.scaler.cropregion无法做到

但,zoom ratio仍然有他的缺点

  • 只能做center_only的zoom,不支持freeform的zoom
  • 当使用zoom ratio来控制zoom时,都是基于中心点不变的方式来zoom,不支持freedom方式进行zoom。即使设置了freedom的crop region也会被camera framework覆盖掉

zoom ratio与crop region同时使用说明

capturerequest#control_zoom_ratio:app可以通过该metadata以更简单的方式来控制zoom,这里的zoom包含了光学变焦和数字变焦

这里的光学变焦如何理解

  • 在android手机上,可能会同时存在多个不同焦距的镜头,比如长焦camera、广角camera,超广角camera
  • 使用logical multi-cam时,当在这些camera间切换时能产生不同的zoom效果,这里的zoom被认为是光学变焦

zoom ratio与crop region同时使用说明

  • 假设camera device的active array size为(2000,1500)
    • active array size: 2000×1500 (3 mp, 4:3 aspect ratio)
    • output stream #1: 640×480 (vga, 4:3 aspect ratio)
    • output stream #2: 1280×720 (720p, 16:9 aspect ratio)

case #1: 4:3 crop region with 2.0x zoom ratio

  • zoomed field of view: 1/4 of original field of view
  • crop region: rect(0, 0, 2000, 1500) // (left, top, right, bottom) (post zoom)

case #1: 4:3 crop region with 2.0x zoom ratio

  • 640×480 stream source area: (0, 0, 2000, 1500) (与 crop region相等)
  • 1280×720 stream source area: (0, 187, 2000, 1312) (垂直裁剪)

case #2: 16:9 crop region with 2.0x zoom

  • zoomed field of view: 1/4 of original field of view

  • crop region: rect(0, 187, 2000, 1312)

case #2: 16:9 crop region with 2.0x zoom

  • 640×480 stream source area: (250, 187, 1750, 1312) (水平裁剪)
  • 1280×720 stream source area: (0, 187, 2000, 1312) (与 crop region相等)

case #3: 1:1 crop region with 0.5x zoom out to ultrawide lens

  • zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)

  • crop region: rect(250, 0, 1750, 1500)

case #3: 1:1 crop region with 0.5x zoom out to ultrawide lens

  • 640×480 stream source area: (250, 187, 1750, 1312) (垂直裁剪)
  • 1280×720 stream source area: (250, 328, 1750, 1172) (垂直裁剪)

从这些例子可以看出:

1.cropregion的坐标系统现在变成了有效的后变焦fov3aface看到的也是有效的后变焦fov

2.在capturerequest中设置zoom ratio后,captureresult中,zoomratio表示camera设备实际调整的倍数,crop region表示在camera设备zoom的基础上额外加上的zoom倍数。

zoom ratio对3a region的影响

举例:app想放大2倍,预览size为640×480,app想设置左上角1/4为3a roi,有下面两种实现方式:

  • zoomratio = 2.0, scaler.cropregion = (0, 0, 2000, 1500)
    • android.control.aeregions 需要设置为 (0, 0, 1000, 750)
  • zoomratio = 1.0 (default), scaler.cropregion = (500, 375, 1500, 1125)
    • android.control.aeregions 需要设置为(500, 375, 1000, 750)

zoom ratio对physical camera影响

zoom ratio只会设置给logical muti-camera,对physical camera不起作用.

camera课程

python教程

java教程

web教程

数据库教程

图形图像教程

办公软件教程

linux教程

计算机教程

大数据教程

开发工具教程

android camera2 api

网站地图