iphone - 使用 iPhone 摄像头作为亮度传感器

标签 iphone ios

我正在尝试将前置摄像头用作亮度传感器(显然,没有用于调整屏幕亮度的独立亮度传感器的公共(public) API)。

我已经设法设置视频捕获 session 并使用 AVCaptureVideoOutput 从视频中抓取帧,并计算帧的亮度。然而,相机会不断调整其曝光设置以补偿亮度,这对于录制视频来说非常有意义,但让我无法获得实际的亮度值。

例如,如果我将手指放在摄像头上,亮度值会迅速下降到 0,但几秒钟后随着摄像头进行补偿,亮度值会再次爬升。

所以...有什么方法可以手动设置曝光并禁用自动调整吗?我尝试设置 AVCaptureDevice.exposureMode,但它似乎没有任何区别。

或者,有没有办法以某种方式从捕获输出中获取曝光信息,以便我可以适本地调整我的亮度计算?

更新: 我能够通过这种方式获得 EXIF 信息;现在我只需要弄清楚如何调整我的亮度计算。

NSDictionary* dict = (NSDictionary*) CMGetAttachment(sampleBuffer, kCGImagePropertyExifDictionary, NULL);
NSString* exp = [nsDict objectForKey:@"ExposureTime"];

最佳答案

你记得在设置曝光模式之前调用lockForConfiguration吗?

您可以在像素缓冲区上使用 CVBufferGetAttachment 访问各种元数据,您可以从样本缓冲区获取;它可能包括暴露状态。

关于iphone - 使用 iPhone 摄像头作为亮度传感器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6347922/

相关文章:

ios - Swift 代码中的 SVPullToRefresh + SVInfiniteScrolling

ios - Obj-c - 显示 'Pay with Apple Pay' 按钮?

ios - 如何让 UIBarButton 执行自定义功能?

iphone - Xcode : self-adjusting font size depending on how a much text is in a text field

iphone - 粘贴的代码不能在新项目中工作?

iphone - 如何将格式化的 nsstring 转换为 NSNumber 或者只是删除格式?

ios - listView 不显示,除非我滚动它

javascript - 根据用户代理更改样式表

iphone - AVAssetExportSession dealloc 在 iOS 4.3 中崩溃

ios - 我只想在 coredata objective-c 中保存时间而不是日期和时间