我正在使用AVFoundation识别文本并执行OCR。如何添加自动对焦?我不想在用户点击屏幕时出现黄色方块,我只是希望它自动聚焦在对象上,例如信用卡。

这是我的 session 代码。

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()

关于ios - 如何将自动对焦添加到AVCaptureSession? swift ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39563155/

10-11 19:50