2017-09-20 29 views
0

我正在开发一个应用程序,我必须从静止图像中读取QR码。下面是我用来读取QR代码的代码:从静止图像中读取QR码

CIImage *ciimage = [CIImage imageWithCGImage:[getRotatedImage CGImage]]; 

NSDictionary *detectorOptions = @{ CIDetectorAccuracy : CIDetectorAccuracyHigh }; 
      CIDetector *faceDetector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:detectorOptions]; 

NSArray *features = [faceDetector featuresInImage:ciimage]; 
      CIQRCodeFeature *faceFeature; 
      for(faceFeature in features) 
      { 
       NSString *str = [NSString stringWithFormat:@"%@",faceFeature.messageString]; 
       break; 
      } 

此代码工作正常一些QR码,但一段时间后它不与静止图像的工作并返回空数组。我搜索了很多,也看到苹果论坛他们也描述了我用过的相同的代码。我还附加了未解码的图像。 enter image description here请任何机构有关于此的任何类型的信息,然后与我分享。这将非常感激。提前致谢。

+0

是QR码的位置始终在左下角? –

+0

不@YUNCHEN:不是必须的,它可能在左上角,右上角等。谢谢! – Vishal

回答

0

我刚刚在本地测试了您的图片,并且我可以确认QR码未读取。我相信你的问题是QR码。似乎这个标志可能会干扰CIDetector。我用另一个QR码取代了你的QR码,它工作。

UIImage *image = [UIImage imageNamed:@"qr3"]; 
    CIImage *ciimage = [CIImage imageWithData:UIImageJPEGRepresentation(image, 1.0f)]; 

    NSDictionary *detectorOptions = @{ CIDetectorAccuracy : CIDetectorAccuracyHigh }; 
    CIDetector *faceDetector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:detectorOptions]; 

    NSArray *features = [faceDetector featuresInImage:ciimage]; 
    CIQRCodeFeature *faceFeature; 
    for(faceFeature in features) { 
     NSString *str = [NSString stringWithFormat:@"%@",faceFeature.messageString]; 
     NSLog(@"Found feature: %@", str); 
     break; 
    } 

这将记录:Found feature: http://en.m.wikipedia.org

enter image description here