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()
これが私がしたことです:
//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()
}