2017-09-20 26 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