您好我正在构建一个扫描IOS应用程序(BarCode和QRCode)。我有一个更宽的调整曝光值(使图像更亮或更暗,取决于光线条件。我用它来手动设置曝光值
captureDevice.setExposureTargetBias(slider.value, completionHandler: nil)
但我的问题是ExposureTargetBias
的最小值和最大值是什么,以便我们可以相应地为min
设置max
和slider
值?
这是调整图像亮度的合适方法还是另一种? (IOS)。
答案 0 :(得分:2)
使用AVCaptureDeviceFormat
中的以下属性获取曝光时间的最小值和最大值。
夫特
var minExposureDuration: CMTime { get }
var maxExposureDuration: CMTime { get }
目标C
@property(nonatomic, readonly) CMTime minExposureDuration;
@property(nonatomic, readonly) CMTime maxExposureDuration;
请注意,您不能直接将这些值设置到滑块中。您可能需要将其设置为0-1作为滑块范围,并执行从滑块值到实际设备曝光持续时间的非线性映射。
以下是Apple AVCam Manual
的示例代码 self.exposureDurationSlider.minimumValue = 0;
self.exposureDurationSlider.maximumValue = 1;
double exposureDurationSeconds = CMTimeGetSeconds( self.videoDevice.exposureDuration );
double minExposureDurationSeconds = MAX( CMTimeGetSeconds( self.videoDevice.activeFormat.minExposureDuration ), kExposureMinimumDuration );
double maxExposureDurationSeconds = CMTimeGetSeconds( self.videoDevice.activeFormat.maxExposureDuration );
// Map from duration to non-linear UI range 0-1
double p = ( exposureDurationSeconds - minExposureDurationSeconds ) / ( maxExposureDurationSeconds - minExposureDurationSeconds ); // Scale to 0-1
self.exposureDurationSlider.value = pow( p, 1 / kExposureDurationPower ); // Apply inverse power
self.exposureDurationSlider.enabled = ( self.videoDevice && self.videoDevice.exposureMode == AVCaptureExposureModeCustom );
如果您想要清晰了解QR码,您可能需要检查焦点,白平衡等其他属性。
答案 1 :(得分:2)
您可以将captureDevice.minExposureTargetBias
和captureDevice.maxExposureTargetBias
用作滑块的最小值和最大值。