苹果的iOS的6.0功能页面 ,它曾经说
采取的内置相机的先进功能。 新的API让你控制对焦,曝光和感兴趣的区域。 您也可以访问,并与人脸检测的API,并利用基于硬件的视频稳定显示的面孔。
本文已被删除,我无法找到控制曝光API中的新方法。 类AVCaptureDevice
下“曝光设置”有针对iOS 6.0没有新的属性/方法。 你知道我在哪里可以找到新功能的API曝光?
苹果的iOS的6.0功能页面 ,它曾经说
采取的内置相机的先进功能。 新的API让你控制对焦,曝光和感兴趣的区域。 您也可以访问,并与人脸检测的API,并利用基于硬件的视频稳定显示的面孔。
本文已被删除,我无法找到控制曝光API中的新方法。 类AVCaptureDevice
下“曝光设置”有针对iOS 6.0没有新的属性/方法。 你知道我在哪里可以找到新功能的API曝光?
这是真的,有一个-exposureMode
物业AVCaptureDevice
,但这只是用于设置模式(关闭/自动/连续),而不是实际的f值,SS,或ISO。 提供“曝光”控制所有摄像头的应用程序似乎通过后期处理来做到这一点。
然而,似乎有在框架无证API来做到这一点。 退房的完整标题AVCaptureDevice.h
(通过类转储 ),并注意以下方法:
- (void)setManualExposureSupportEnabled:(BOOL)arg1;
- (BOOL)isManualExposureSupportEnabled;
- (void)setExposureGain:(float)arg1;
- (float)exposureGain;
- (void)setExposureDuration:(struct { long long x1; int x2; unsigned int x3; long long x4; })arg1;
- (struct { long long x1; int x2; unsigned int x3; long long x4; })exposureDuration;
- (void)setExposureMode:(int)arg1;
- (int)exposureMode;
- (BOOL)isExposureModeSupported:(int)arg1;
我的猜测是gain
等效光圈(固定孔径),并且duration
是快门速度。 我不知道如果这些被用于iPhone 5的弱光升压模式 。
您还可以使用otool
闲逛,并尝试符号拼凑。 有可能在一个新的常数exposureMode
用于启用手动控制,并exposureDuration
好像它标志了。 当调用这些时,请务必使用新的-isExposureModeSupported:
也叫-respondsToSelector:
要检查其兼容性。
与往常一样,使用私有的API是由苹果公司令人难以接受,并引起了从App Store拒绝。 附近可能有这种方式,如使用隐藏来电-performSelector:
或obc_msgsend
用ROT13串什么的,因为我敢肯定,他们只做上的应用程序二进制静态分析。
我已经成功地“欺骗”相机到运行更短的曝光时间,但我怀疑它只会使用那些做类似的(宏)图像获取的。 我第一次设立AVCaptureDevice使用AVCaptureExposureModeContinuousAutoExposure和闪光灯设置为TorchMode。 然后我UnlockForConfiguration并设置了一键 - 值观察员观看了adjustingExposure完成。 我然后重新锁定设备,翻转AVCaptureExposureModeLocked,并关闭火炬。 这有蛮力设定较短的快门速度比相机将在联合国照场景中选择效果。 通过与火炬的水平,我可以设置任何相对快门速度值我要玩(这将是最好的当然要留下的火炬,但在我的应用它产生的眩光主题)。 同样,这只有真正的作品时,你的对象的距离非常接近(小于说6英寸),但它让我消除手抖在我的特写图像模糊。 不利的一面是,图像较暗,因为我没有欺骗相机增益的方法,但不是在我的具体应用问题。
看起来他们已经更新了该链接的文本有没有暴露新的API提:
使用内置摄像头的强大的新功能。 新的API支持实时视频稳定,改进的LED闪光灯,和人脸检测和显示。 您可以采集过程中得到丢帧的报告,并充分利用新的应用程序映射的UI倒是对焦和曝光的命令。 以及支持iPhone 5的应用程序可以利用的低光升压模式的优势。
有一个选择,在低光照升压模式为iPhone 5,详细吉姆罗兹这里 (在此开发者论坛后 ,需要登录)。
作为后续迈克尔Grinich出色的信息,我发现有一些私人API的调用顺序依赖。 要使用“手动”曝光控制,你必须让他们将模式设置之前 ,就像这样:
#define AVCaptureExposureModeManual 3
NSError* error = nil;
if ([captureDevice lockForConfiguration:&error]) {
captureDevice.manualExposureSupportEnabled = YES;
if ([captureDevice isExposureModeSupported:AVCaptureExposureModeManual]) {
captureDevice.exposureMode = AVCaptureExposureModeManual;
captureDevice.exposureGain = ...;
captureDevice.exposureDuration = {...};
}
[captureDevice unlockForConfiguration];
}
所有这一切都证明了IOS的ManualCamera 。
与iOS 8.0开始,这是现在终于成为可能。
见setExposureModeCustomWithDuration等苹果的文档。
这是一篇文章讨论如何使用这些API。