核心图像检测器(CIDetector)未检测到QRCodes

时间:2015-11-12 22:39:48

标签: ios swift core-image

我试图让我的应用程序的用户能够从他们的库中获取图像并从中扫描QRCode。以下是相关代码:

这是从具有所选图像的图像选择器返回的功能。

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
    let thisImage:CIImage? = CIImage(image: image)
    let code = performQRCodeDetection(thisImage!)

    self.dismissViewControllerAnimated(true, completion: nil)

    self.performSegueWithIdentifier("goBackSegue", sender: code)


}

在该函数内部,我调用此函数进行QRCode扫描:

func performQRCodeDetection(image: CIImage) -> String {
    var decode = ""
    let options = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
    let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: options)

    let features = detector.featuresInImage(image)
    for feature in features as! [CIQRCodeFeature] {
        decode = feature.messageString
    }
    return decode
}

变量功能总是空着。图像中肯定有QRCode。我拍摄了所有方向和尺寸的图像。我无法得到任何结果。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题在于相册中的照片质量。 如果你把一个qr图像文件从bundle替换为“image”,例如.. [UIImage imageNamed:@“foobar.png”],则会出现qr结果。 顺便说一句,我试过可能的照片,没有运气让它有效。