我正在开发一个使用手机摄像头的应用程序,并使用这段代码提供的亮度值来做一些事情:
- (CGFloat)getBrightnessValue:(CMSampleBufferRef)sampleBuffer {
CFDictionaryRef metadataDict = CMCopyDictionaryOfAttachments(NULL, sampleBuffer, kCMAttachmentMode_ShouldPropagate);
NSDictionary *metadata = [[NSMutableDictionary alloc] initWithDictionary:(__bridge NSDictionary*)metadataDict];
CFRelease(metadataDict);
NSDictionary *exifMetadata = [[metadata objectForKey:(NSString *)kCGImagePropertyExifDictionary] mutableCopy];
return [[exifMetadata objectForKey:(NSString *)kCGImagePropertyExifBrightnessValue] floatValue];
}
此方法提供了sampleBuffer:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
我已经研究过并且已经阅读过该亮度的最大值和最小值是-99和99,但是我认为这是“理论上的”,因为例如在我的iPhone XI中,亮度不能降低比接近-10和10,或类似的水平。问题是,您是否知道是否有一种方法可以获取指示该值的百分比?我的意思是,这张图片中的亮度是70%,因为它与相机无关,对我来说非常有用:) Thx!