据我所知,iOS中的相机在拍摄视频和照片时会自动调整曝光。
问题:
我怎样才能关掉相机的自动曝光?
在Swift代码中,如何将相机的曝光设置为“零”,使曝光对周围环境完全中立,而不补偿光线?
发布于 2017-07-20 02:01:32
您可以通过设置"AVCaptureExposureMode“属性来设置公开模式。这里的文件。
var exposureMode: AVCaptureDevice.ExposureMode { get set }
3件你必须考虑的事情。
1)检查设备是否真正支持"isExposureModeSupported“
2)在调整曝光前,必须“锁定配置”。这里的文件。
3)通过设定ISO和持续时间来调整曝光。你不能把它设为"0“
此属性通过应用于信号的增益值来返回传感器对光的灵敏度。只支持minISO和maxISO之间的曝光持续时间值。更高的值将导致更嘈杂的图像。无论公开模式如何,属性值都可以在任何时候读取,但只能使用setExposureModeCustom(duration:iso:completionHandler:)方法设置。
发布于 2020-09-30 11:09:51
如果只需要最小、当前和最大曝光值,则可以使用以下方法:
Swift 5
import AVFoundation
enum Esposure {
case min, normal, max
func value(device: AVCaptureDevice) -> Float {
switch self {
case .min:
return device.activeFormat.minISO
case .normal:
return AVCaptureDevice.currentISO
case .max:
return device.activeFormat.maxISO
}
}
}
func set(exposure: Esposure) {
guard let device = AVCaptureDevice.default(for: AVMediaType.video) else { return }
if device.isExposureModeSupported(.custom) {
do{
try device.lockForConfiguration()
device.setExposureModeCustom(duration: AVCaptureDevice.currentExposureDuration, iso: exposure.value(device: device)) { (_) in
print("Done Esposure")
}
device.unlockForConfiguration()
}
catch{
print("ERROR: \(String(describing: error.localizedDescription))")
}
}
}
https://stackoverflow.com/questions/45203701
复制相似问题