【问题标题】:how can i set the camera function that anti-shake(image Stabilizer) at android我如何在android上设置防抖(图像稳定器)的相机功能
【发布时间】:2014-07-19 17:36:30
【问题描述】:

我已经制作了一个相机应用程序。

我想添加防抖功能。

但我找不到防抖(图像稳定器)的设置。

请帮帮我!!

【问题讨论】:

    标签: android camera android-camera settings


    【解决方案1】:

    如果你想开发软件图像稳定器,OpenCV 对你很有帮助。以下是使用Feature稳定图像的方法之一。

    1. 首先,您应该使用 SIFT、SURF 算法等特征提取器从图像中提取特征。就我而言,FAST+ORB 算法是最好的。如果您想了解更多信息,See this paper
    2. 在你得到图像中的特征后,你应该找到与图像匹配的特征。匹配器有几个,但暴力匹配器还不错。如果您的系统中的 Bruteforce 速度很慢,您应该使用 KD-Tree 之类的算法。
    3. 最后,你应该得到几何变换矩阵,它可以最小化变换点的误差。在这个过程中可以使用 RANSAC 算法。

    您可以使用 OpenCV 开发所有这些流程,我已经在移动设备中开发了它。 See this repository

    【讨论】:

      【解决方案2】:

      通常图像稳定器是内置相机功能,而 OIS(光学图像稳定)是内置硬件功能;到目前为止,很少有设备支持它们。
      如果设备没有内置功能,我认为您无能为力。

      Android 不提供直接 API 来管理图像稳定,但您可以尝试:

      1. 如果android.hardware.Camera.getParameters().getSupportedSceneModes(); 包含steadyphoto 关键字(请参阅here),则您的设备支持某种稳定(通常在加速度计数据指示“稳定”情况时进行拍摄)
      2. 检查android.hardware.Camera.getParameters().flatten(); 中的“OIS”或“图像稳定器”关键字/值或类似Parameters.set(key, value); 中使用的关键字/值。对于三星 Galaxy 相机,您应该使用 parameters.set("image-stabilizer", "ois");//can be "ois" or "off"
      3. 如果您真的很无聊,您可以尝试读取加速度计数据并决定在设备看起来稳定时拍摄。

      祝你好运。

      【讨论】:

      • 我支持第三点。以编程方式似乎是可能的。
      • parameters.set("image-stabilizer", "ois"); - 你在哪里找到这个信息?
      • @user924 呃,那是很多年前的事了……但我想我是在 android.hardware.Camera.getParameters().flatten();东西......祝你好运!
      猜你喜欢
      • 1970-01-01
      • 2015-09-30
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      相关资源
      最近更新 更多