Как получить более быстрое чтение кода матрицы данных? - PullRequest
1 голос
/ 18 октября 2019

Итак, я играл с этим: https://apps.apple.com/us/app/qr-code-barcode-scanner/id1048473097

приложением со штрих-кодом. Я заметил, что он фокусируется почти на всех, сохраняя при этом автофокус. Кроме того, объект перед камерой почти не имеет размытия при движении (при перемещении).

Итак, я сделал некоторые изменения в своем коде штрих-кода / QR / матрицы данных, чтобы он был похож на приложение. Причина, по которой я это сделал, заключается в том, что их приложение смогло записать ДЕЙСТВИТЕЛЬНО маленький код матрицы данных (здесь не отображается), а мое приложение не было. После настройки я теперь могу читать код матрицы данных SMALL, но не так быстро, как они. Мой может сделать это так же быстро (если не быстрее), если он размещен в нужной области, но они более последовательны и не требуют такого большого количества "поиска", чтобы найти позицию для кода матрицы данных, который затем будет извлечен.

Ниже приведен мой код AVFoundation.

    view.backgroundColor = UIColor.black
    captureSession = AVCaptureSession()
    captureSession.sessionPreset = AVCaptureSession.Preset.hd1920x1080;

    guard let videoCaptureDevice = AVCaptureDevice.default(for: .video) else { return }
    do {
        try videoCaptureDevice.lockForConfiguration()
    } catch {
        return
    }
//        videoCaptureDevice.focusMode = AVCaptureDevice.FocusMode.autoFocus
    videoCaptureDevice.autoFocusRangeRestriction = .near

//        videoCaptureDevice.activeVideoMaxFrameDuration = CMTimeMake(value: 1, timescale: 30)
//        videoCaptureDevice.activeVideoMinFrameDuration = CMTimeMake(value: 1, timescale: 30)
//        videoCaptureDevice.focusMode = AVCaptureDevice.FocusMode.continuousAutoFocus
//        videoCaptureDevice.setFocusModeLocked(lensPosition: 0.45) { (hi) in
//            print(hi)
//        }

    videoCaptureDevice.focusMode = .continuousAutoFocus
    videoCaptureDevice.unlockForConfiguration()

    let videoInput: AVCaptureDeviceInput

    do {
        videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice)
    } catch {
        return
    }

    if (captureSession.canAddInput(videoInput)) {
        captureSession.addInput(videoInput)
    } else {
        failed()
        return
    }

    let metadataOutput = AVCaptureMetadataOutput()

    if (captureSession.canAddOutput(metadataOutput)) {
        captureSession.addOutput(metadataOutput)

        metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
        metadataOutput.metadataObjectTypes = types
    } else {
        failed()
        return
    }

Типы просто содержат тип объекта (например: [.qr, .dataMatrix, .etc])

Если есть что-то, что выребята понимают, что это сделало бы это более физически совместимым с меньшим штрих-кодом матрицы данных, что было бы здорово!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...