使用iPhone相机作为亮度传感器

ler*_*mjs 10 iphone ios

我正在尝试使用前置摄像头作为亮度传感器(显然没有用于调整屏幕亮度的单独亮度传感器的公共API).

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

例如,如果我将手指放在相机上,亮度值会快速下降到0,但几秒后它会在相机补偿时再次爬回来.

那么......有没有办法手动设置曝光并禁用自动调整?我尝试设置AVCaptureDevice.exposureMode,但它似乎没有任何区别.

或者,是否有办法以某种方式从捕获输出中获取曝光信息,因此我可以适当地偏置亮度计算?

更新:我能够以这种方式获得EXIF信息; 现在我只需要弄清楚如何偏向亮度计算.

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

LaC*_*LaC 2

lockForConfiguration您记得在设置曝光模式之前打电话吗?

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