0

我正在开发一个应用程序,我必须从静止图像中读取 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 码,但有时它不适用于静止图像并返回空白数组。我进行了很多搜索,还看到了 Apple 论坛,他们也描述了我使用的相同代码。我还附上了未解码的图像。在此处输入图像描述请任何机构对此有任何类型的信息,然后与我分享。将不胜感激。提前致谢。

4

1 回答 1

2

我刚刚在本地测试了您的图像,我可以确认,没有读取 QR 码。我相信你的问题是二维码。似乎徽标可能干扰了 CIDetector。我用另一个二维码替换了你的二维码,它起作用了。

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

在此处输入图像描述

于 2017-09-20T23:23:29.853 回答