2015-04-15 4 views
2

J'ai un AVCaptureDevice spécifiquement pour scanner les codes QR (en utilisant AVMetadataObjectTypeQRCode). Mon but est de faire scanner le code QR aussi vite que possible.Optimiser la caméra pour les codes QR

Plusieurs paramètres de la caméra AVCaptureDevice (par exemple focus et exposure) peuvent être ajustés par programmation dans iOS.

Quelles optimisations de caméra je peux faire pour minimiser le temps qu'il faut pour capturer un code QR sur un iPhone?

Répondre

1

La plupart de ces paramètres des valeurs optimales varient en fonction de l'environnement (par exemple sombre/lumineux, proche/lointain code QR, etc.), de sorte que si vous connaissez l'environnement de votre utilisateur (par exemple, si l'application a été utilisé exclusivement dans lignes d'assemblage en usine), la valeur par défaut est probablement la meilleure.

Cependant (selon this source), Si vous savez que le code QR sera proche de la caméra, vous pouvez accélérer l'autofocus en réglant autoFocusRangeRestriction sur une valeur proche de la plage. Vous pouvez également vous assurer que smoothAutoFocusEnabled est défini sur false.

+0

C'est parfait, merci! – Randomblue

-4

J'ai été utilisé AVCaptureDevice. Ce code de travail trouve que j'ai été utilisé dans mon application de code à barres. Ce code.

-(void)BarcodeStart 
{ 

    _highlightView = [[UIView alloc] init]; 

    _highlightView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin; 

    _highlightView.layer.borderColor = [UIColor lightGrayColor].CGColor; 
    _highlightView.layer.borderWidth = 3; 

    [barcameraView addSubview:_highlightView]; 

    _label = [[UILabel alloc] init]; 
    _label.frame = CGRectMake(0, self.view.bounds.size.height - 40, self.view.bounds.size.width, 40); 
    _label.autoresizingMask = UIViewAutoresizingFlexibleTopMargin; 
    _label.backgroundColor = [UIColor colorWithWhite:0.15 alpha:0.65]; 
    _label.textColor = [UIColor whiteColor]; 
    _label.textAlignment = NSTextAlignmentCenter; 
    _label.text = @"(none)"; 
    [self.view addSubview:_label]; 
    //BackBtn UP side Show 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    //[button addTarget:self action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown]; 
    UIImageView *img = [[UIImageView alloc] init]; 
    button.frame = CGRectMake(3,19,30,30); 
    img.image = [UIImage imageNamed:@"backBtnImg.png"]; 
    [button setImage:img.image forState:UIControlStateNormal]; 
    [_highlightView addSubview:button]; 
    // 
    _session = [[AVCaptureSession alloc] init]; 
    _device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
    NSError *error = nil; 

    _input = [AVCaptureDeviceInput deviceInputWithDevice:_device error:&error]; 
    if (_input) { 
     [_session addInput:_input]; 
    } else { 
     NSLog(@"Error: %@", error); 
    } 

    _output = [[AVCaptureMetadataOutput alloc] init]; 
    [_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()]; 
    [_session addOutput:_output]; 

    _output.metadataObjectTypes = [_output availableMetadataObjectTypes]; 

    _prevLayer = [AVCaptureVideoPreviewLayer layerWithSession:_session]; 
    // _prevLayer.frame = CGRectMake(20, 70, 280, 280); 
    _prevLayer.frame = barcameraView.bounds; 
    _prevLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
    [barcameraView.layer addSublayer:_prevLayer]; 

    [_session startRunning]; 

    [barcameraView bringSubviewToFront:_highlightView]; 
    [self.view bringSubviewToFront:_label]; 
} 
+0

Je ne vois aucun réglage manuel de caméra ici. – Randomblue

+0

ok merci pour les conseils ... – 1994