自动对焦:选择对焦点

时间:2011-04-06 16:10:35

标签: android

HTC Desire HD附带的相机应用程序允许用户在他们希望聚焦的位置触摸屏幕;一个边界指示器出现在该区域周围,自动对焦发挥其神奇作用。因此,捕获的图像可以在右上角有一个远点,在左下角有一个近点,用户可以在拍照之前选择其中哪一个是焦点。

我被要求创建一个应用程序,允许用户在拍摄照片后选择感兴趣的区域,显然,如上所述,在拍摄照片之前,该区域可能会对焦。

到目前为止,我的应用程序在图像中心自动对焦,但我找不到在任何文档中选择要关注的区域的参考。任何想法。

3 个答案:

答案 0 :(得分:5)

您要求的是手动对焦。

在Android SDK的帮助下单独使用此功能是不可能的。您需要在相机上设置焦距。但是如果你看到用于Android的Camera SDK那么你会注意到有一个API来获得焦点而不是设置它。

所有告诉它的市场应用程序都在进行手动对焦是不正确的,您可以运行简单的实验来检查这一点。在相机预览中保持远近物体并依次尝试聚焦远近物体,当焦点在远物体上时,近物体应该模糊,当焦点在近物体上时,远物体应该模糊..市场应用程序不会发生这种情况。 (我试过几个,如果你找到一个真正做到这一点,那就让我知道:))

但是如果你正在做一个OEM应用程序(如果你有设备的可构建BSP),那么可以这样做(就像你提到的应用程序那样)。这就是他们如何做到的(注意 - 这些步骤可能不全面,但它会给你一些想法..)

  • 当用户点击预览表面时,将获得坐标(框区域。)
  • 然后这是一个基本上做的焦点算法
    • 获取框区域和预览数据
    • 尝试在预览数据中找到边缘
    • 调整焦距以获得更清晰的边缘(这时您可以在预览中看到正在进行某些变焦)
    • 它计算出最佳焦距,使其在框中产生锐利边缘并返回
  • 现在应用程序说它已经集中,并且已经实现了手动关注。

答案 1 :(得分:4)

从API版本14开始,似乎有一种方法:

public void setFocusAreas(List focusAreas)

Android Developer Documentation: setFocusAreas

答案 2 :(得分:3)

Cyanogenmod刚刚将它添加到他们的相机应用程序中 - 您可能想看看他们在那里所做的更改。 相关补丁:http://review.cyanogenmod.com/#change,6487