我正在使用 OpenCV 为 Android 手机 (Moto Z) 上的计算机视觉编写自定义应用程序。更复杂的是,我在相机上附加了一个鱼眼镜头。
现在,我注意到当我在获取预览图像时移动设备时,鱼眼镜头照亮的圆形区域会明显移动并且即使设备没有移动也会抖动(参见 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
,并且更改场景模式也没有任何区别。
关于如何获得不稳定预览图像的任何其他提示/想法?我想在 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
类,只需要稍作修改。更多详细信息/文档,请访问 https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html#LENS_OPTICAL_STABILIZATION_MODE .
关于android - 在 Android (Moto Z) 上禁用自动图像稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57586591/