web-dev-qa-db-ja.com

AVCaptureSessionにオートフォーカスを追加する方法は? SWIFT

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

}
12
mawnch

私の6Sでは、デフォルトのカメラフォーカスモードは.ContinuousAutoFocusで、カメラの視野の大部分を占めているものに継続的に焦点を合わせます。それはあなたが望むもののように聞こえます。

お使いのカメラが次のようにオートフォーカスをサポートしているかどうかを確認できます。

camera.isFocusModeSupported(.ContinuousAutoFocus)

まだ設定されていない場合は、次のように設定します。

try! camera.lockForConfiguration()
camera.focusMode = .ContinuousAutoFocus
camera.unlockForConfiguration()
16

これが私がしたことです:

 //get instance of phone camera
 let captureDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)
 //try to enable auto focus
 if(captureDevice!.isFocusModeSupported(.continuousAutoFocus)) {
     try! captureDevice!.lockForConfiguration()
     captureDevice!.focusMode = .continuousAutoFocus
     captureDevice!.unlockForConfiguration()
 }
6
Droid Chris