2016-09-18 17 views
5

Metni tanımak ve OCR yapmak için AVFoundation kullanıyorum. Otomatik netlemeyi nasıl eklerim? Kullanıcı ekrana dokunduğunda sarı kareye sahip olmak istemiyorum, sadece otomatik olarak nesneye odaklanmasını istiyorum, örneğin bir kredi kartı.AVCaptureSession'a otomatik odaklama nasıl eklenir? SWIFT

İşte oturum kodum. Benim 6S üzerinde

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

} 

cevap

7

varsayılan kamera odaklama modu sürekli kamera görüş alanının çoğunu kaplıyor ne odaklanır .ContinuousAutoFocus vardır. İstediğiniz gibi geliyor.

Eğer kamera şöyle oto odak destekleyip desteklemediğini kontrol edebilirsiniz:

camera.isFocusModeSupported(.ContinuousAutoFocus) 

ve zaten ayarlanmış değilse, şöyle ayarlayın: İşte

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

ne yaptım:

//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() 
} 
İlgili konular