访问的iOS相机曝光和快门速度的6个新的API(Accessing iOS 6 new APIs f

2019-06-18 08:24发布

苹果的iOS的6.0功能页面 ,它曾经说

采取的内置相机的先进功能。 新的API让你控制对焦,曝光和感兴趣的区域。 您也可以访问,并与人脸检测的API,并利用基于硬件的视频稳定显示的面孔。

本文已被删除,我无法找到控制曝光API中的新方法。 类AVCaptureDevice下“曝光设置”有针对iOS 6.0没有新的属性/方法。 你知道我在哪里可以找到新功能的API曝光?

Answer 1:

这是真的,有一个-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串什么的,因为我敢肯定,他们只做上的应用程序二进制静态分析。



Answer 2:

我已经成功地“欺骗”相机到运行更短的曝光时间,但我怀疑它只会使用那些做类似的(宏)图像获取的。 我第一次设立AVCaptureDevice使用AVCaptureExposureModeContinuousAutoExposure和闪光灯设置为TorchMode。 然后我UnlockForConfiguration并设置了一键 - 值观察员观看了adjustingExposure完成。 我然后重新锁定设备,翻转AVCaptureExposureModeLocked,并关闭火炬。 这有蛮力设定较短的快门速度比相机将在联合国照场景中选择效果。 通过与火炬的水平,我可以设置任何相对快门速度值我要玩(这将是最好的当然要留下的火炬,但在我的应用它产生的眩光主题)。 同样,这只有真正的作品时,你的对象的距离非常接近(小于说6英寸),但它让我消除手抖在我的特写图像模糊。 不利的一面是,图像较暗,因为我没有欺骗相机增益的方法,但不是在我的具体应用问题。



Answer 3:

看起来他们已经更新了该链接的文本有没有暴露新的API提:

使用内置摄像头的强大的新功能。 新的API支持实时视频稳定,改进的LED闪光灯,和人脸检测和显示。 您可以采集过程中得到丢帧的报告,并充分利用新的应用程序映射的UI倒是对焦和曝光的命令。 以及支持iPhone 5的应用程序可以利用的低光升压模式的优势。

一个选择,在低光照升压模式为iPhone 5,详细吉姆罗兹这里 (在此开发者论坛后 ,需要登录)。



Answer 4:

作为后续迈克尔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 。



Answer 5:

与iOS 8.0开始,这是现在终于成为可能。

见setExposureModeCustomWithDuration等苹果的文档。

这是一篇文章讨论如何使用这些API。



文章来源: Accessing iOS 6 new APIs for camera exposure and shutter speed