Чтение 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-кодов, но иногда он не работает с неподвижным изображением и возвращает пустой массив. Я много искал, а также вижу форум Apple, на котором также описан тот же код, который я использовал. Я также прилагаю изображение, которое не декодировано.введите описание изображения здесь Пожалуйста, у любого органа есть какая-либо информация по этому поводу, а затем поделитесь со мной. Было бы очень признательно. Заранее спасибо.


person Vishal    schedule 20.09.2017    source источник
comment
QRCode всегда находится в левом нижнем углу?   -  person Yun CHEN    schedule 20.09.2017
comment
Нет @YunCHEN: это не обязательно, это может быть верхний левый угол, верхний правый угол и т. д. Спасибо!   -  person Vishal    schedule 20.09.2017


Ответы (1)


Я только что проверил ваше изображение локально и могу подтвердить, что 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

введите здесь описание изображения

person Gabriel Pires    schedule 20.09.2017