【发布时间】:2012-07-11 09:30:21
【问题描述】:
我知道如何使用 android.hardware.sensor 从光传感器获取勒克斯值。
我在市场上看到了light meter tools。应用程序描述说它可以从相机中获取勒克斯值。怎么会这样?
还有如何设置快门速度和光圈?
【问题讨论】:
我知道如何使用 android.hardware.sensor 从光传感器获取勒克斯值。
我在市场上看到了light meter tools。应用程序描述说它可以从相机中获取勒克斯值。怎么会这样?
还有如何设置快门速度和光圈?
【问题讨论】:
android 相机 API 不为其捕获的图像数据提供任何绝对单位。此外,它不允许手动控制曝光或光圈(尽管基本上所有手机相机都没有可调光圈)。
您可以从 JPEG EXIF 中找出静态捕捉所用的曝光时间,仅此而已。
由于这些限制,您将很难从捕获的相机图像中获得绝对光测量值。您可能能够校准给定设备以将图像像素值转换为真实光照水平,但这会很复杂,因为所有设备都运行自动曝光和自动白平衡。使用 Android 4.0 中引入的自动曝光和自动白平衡锁定会有所帮助,但在勒克斯和捕获的像素值之间仍然存在未知的转换曲线(不仅仅是比例因子,它是伽玛曲线)。
【讨论】:
看看Camera.Parameters 类。
它具有相机支持的所有功能。可能是setExposureCompensation。
我对摄影不太了解,但我的猜测是曝光补偿正在改变光圈或速度。
可能是您提到的工具使用了捆绑的本机库。还可以看看Camera.Parameters 类中给出的函数是如何工作的(查看 android 源代码)。
您还可以使用环境光传感器来获取以勒克斯为单位的光照水平(如果这在您的项目范围内)。来自安卓文档:
传感器.TYPE_LIGHT:
值[0]:以 SI 勒克斯为单位的环境光照水平
Android Developer: Light Sensor-Sensor Event
您可以在文档中找到有关光传感器的更多信息。
【讨论】:
同意,诀窍是拍照并读取其 EXIF 数据。 您可以找到有关 ExifInterface 文档的更多信息 http://developer.android.com/reference/android/media/ExifInterface.html
根据iso和光圈值,可以计算shuyy
【讨论】: