Android 5.0预览曲面上的裁剪区域错误,捕获的静止图像

Gri*_*man 5 android zoom android-camera android-5.0-lollipop

我正在尝试使用camera2接口在Android 5.0上获得数字缩放帧.适用于该功能的doc是developer.android.com/camera2/captureRequest

我的应用中使用的表面:

  • SurafaceView(1920x1080,16:9宽高比)
  • ImageReader(3264x2448,4:3宽高比)

相机的传感器尺寸为3280x2464(4:3宽高比)

我想从传感器获得的作物区域是:

Rect zoomCropPreview = new Rect(1094, 822, 2186, 1642); //(1092x820, 4:3 aspect ratio)
Run Code Online (Sandbox Code Playgroud)

我将此Rect设置为预览请求的参数:

previewRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCropPreview);
captureSession.setRepeatingRequest(previewRequestBuilder.build(), null, null);
Run Code Online (Sandbox Code Playgroud)

并采取静止图像:

stillRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCropPreview);

captureSession.capture(stillRequestBuilder.build(), new captureListener() , null);
Run Code Online (Sandbox Code Playgroud)

预期成绩:

  • Coz裁剪矩形是4:3的比例,然后预览应垂直裁剪(信箱)
  • 静止图像应该是精确的裁剪区域.
  • 预览图像和静止图像都应位于同一场景点的中心,并且应仅在垂直边缘上有所不同.

真实结果:

  • 预览和静止图像指向不同的场景,似乎是垂直移动.查看附加图像. 预览曲面

捕获静止图像

我究竟做错了什么?

Gri*_*man 2

固定的!总体思路是分别计算预览和静态图像的裁剪区域。

1) 计算静态图像的裁剪区域,如初始帖子中所示(使用 4:3 矩形)

2) 对于预览,选取裁剪区域 (4:3) 上方并缩小垂直尺寸以获得 16:9 矩形。