在 Android (Moto Z) 上禁用自动图像稳定?

Disabling automatic image stabilization on Android (Moto Z)?

我正在 Android phone (Moto Z) 上使用 OpenCV 编写自定义应用程序以实现计算机视觉。更复杂的是,我在相机上安装了一个鱼眼镜头。

现在,我注意到当我在获取预览图像时移动设备时,鱼眼镜头照亮的圆形区域会明显移动并且即使设备没有移动也会抖动(参见 https://youtu.be/J4Ns0mzgFww插图,难以描述)。

效果看起来就像鱼眼镜头在实际相机镜头前物理移动一样,但它连接得相当牢固,即使移动非常慢也会发生这种情况。所以我唯一的解释是在后台某处有某种低级图像稳定过程 运行。

不幸的是,这完全扰乱了我的相机校准,因为 cx/cy 不再稳定。我看过 how can i set the camera function that anti-shake(image Stabilizer) at android,但 Camera.Parameters 对象告诉我 video-stabilization-supported=false,并且更改场景模式也没有任何区别。

关于如何获得 不稳定 预览图像的任何其他 hints/ideas?我想在 RAW 模式下使用 Camera2 API 可能会起作用,但这意味着要重写一大块 OpenCV 图像采集代码......首选替代方案:-)

像往常一样,我在发布问题 15 分钟后自己弄明白了。那好吧。不管怎样

Camera2 API 通过

可以做到这一点
requestBuilder.set(CaptureRequest.LENS_OPTICAL_STABILIZATION_MODE, 
  CameraMetadata.LENS_OPTICAL_STABILIZATION_MODE_OFF);

仍然意味着我必须切换到 Camera2 API,但至少不要切换到 RAW。从 4.0 开始,OpenCV 实际上有一个现成的 JavaCamera2View class,只需要稍作修改。更多 details/docs 可在 https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html#LENS_OPTICAL_STABILIZATION_MODE.

获得