我正在使用AVFoundation识别文本并执行OCR.如何添加自动对焦?当用户点击屏幕时,我不希望有黄色方块的东西,我只是想让它自动关注对象,例如信用卡.
这是我的会话代码.
func setupSession() {
session = AVCaptureSession()
session.sessionPreset = AVCaptureSessionPresetHigh
let camera = AVCaptureDevice
.defaultDeviceWithMediaType(AVMediaTypeVideo)
do { input = try AVCaptureDeviceInput(device: camera) } catch { return }
output = AVCaptureStillImageOutput()
output.outputSettings = [ AVVideoCodecKey: AVVideoCodecJPEG ]
guard session.canAddInput(input)
&& session.canAddOutput(output) else { return }
session.addInput(input)
session.addOutput(output)
previewLayer = AVCaptureVideoPreviewLayer(session: session)
previewLayer!.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer!.connection?.videoOrientation = .Portrait
view.layer.addSublayer(previewLayer!)
session.startRunning()
}
解决方法
在我的6S上,默认的相机对焦模式是.ContinuousAutoFocus,它持续关注占据相机视野大部分的任何物体.听起来就像你想要的那样.
您可以检查您的相机是否支持自动对焦:
camera.isFocusModeSupported(.ContinuousAutoFocus)
如果尚未设置,请将其设置为:
try! camera.lockForConfiguration() camera.focusMode = .ContinuousAutoFocus camera.unlockForConfiguration()