2016-09-18 24 views
5

Tôi đang sử dụng AVFoundation để nhận dạng văn bản và thực hiện OCR. Làm cách nào để thêm tự động lấy nét? Tôi không muốn có hình vuông màu vàng khi người dùng chạm vào màn hình, tôi chỉ muốn nó tự động tập trung vào đối tượng, ví dụ như thẻ tín dụng.Cách thêm tự động lấy nét vào AVCaptureSession? SWIFT

Đây là mã phiên của tôi.

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

} 

Trả lời

7

On 6S của tôi chế độ lấy nét máy ảnh mặc định là .ContinuousAutoFocus, mà liên tục tập trung vào bất cứ điều gì đang chiếm hầu hết lĩnh vực của máy ảnh của tầm nhìn. Có vẻ như đó là điều bạn muốn.

Bạn có thể kiểm tra nếu máy ảnh của bạn hỗ trợ tự động lấy nét giống như vậy:

camera.isFocusModeSupported(.ContinuousAutoFocus) 

và nếu nó chưa được thiết lập, thiết lập nó như vậy:

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

Dưới đây là những gì tôi đã là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() 
} 
Các vấn đề liên quan