首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microblink:读取图像

Microblink:读取图像
EN

Stack Overflow用户
提问于 2021-03-13 02:32:38
回答 1查看 88关注 0票数 1

我要求Microblink care阅读器看一张卡片的照片,而不是使用相机:

代码语言:javascript
复制
lazy var blinkCardRecognizer: MBCBlinkCardRecognizer = {
    return MBCBlinkCardRecognizer()
}()
lazy var recognizerCollection: MBCRecognizerCollection = {
    blinkCardRecognizer.extractCvv = false
    blinkCardRecognizer.extractIban = false
    blinkCardRecognizer.extractExpiryDate = false
    
    let recognizerList = [blinkCardRecognizer]
    return MBCRecognizerCollection(recognizers: recognizerList)
}()

我的类声明了这两个委托:

代码语言:javascript
复制
MBCBlinkCardOverlayViewControllerDelegate, MBCScanningRecognizerRunnerDelegate

我确信我给这个函数传递了一个正确的UIImage,并且我确实得到了processImage调用:

代码语言:javascript
复制
func prepareToReadImage(_ theImage: UIImage?) {
    let recognizerRunner: MBCRecognizerRunner = MBCRecognizerRunner(recognizerCollection: recognizerCollection)
    recognizerRunner.scanningRecognizerRunnerDelegate = self
    
    var image: MBCImage? = nil
    if let anImage = theImage {
        image = MBCImage(uiImage: anImage)
    }
    image?.cameraFrame = true
    image?.orientation = MBCProcessingOrientation.left
    let _serialQueue = DispatchQueue(label: "com.microblink.DirectAPI-sample-swift")
    _serialQueue.async(execute: {() -> Void in
        recognizerRunner.processImage(image!)
    })
}

但是这个回调没有被命中:

代码语言:javascript
复制
func recognizerRunner(_ recognizerRunner: MBCRecognizerRunner, didFinishScanningWith state: MBCRecognizerResultState) {
    if state == .valid {
        print (state)
    }
}

你能明白为什么它不是吗?我看到警告You are using time-limited license key!的日志有关系吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-13 19:34:27

从所提供的代码中,我可以看到已经正确输入了recognizerRunnerprepareToReadImage方法。但是,在定义识别器和recognizerCollection的第一段代码中,我可以看到问题可能出在MBCRecognizerCollection上,因为它的参数recognizers的类型是[MBCRecognizer],而您在那里放置了[MBCBlinkCardRecognizer]。我可以推荐这个解决方案,看看它是否有效:

代码语言:javascript
复制
    blinkCardRecognizer = MBCBlinkCardRecognizer()
    var recognizerList = [MBCRecognizer]()
    
    let recognizerCollection: MBCRecognizerCollection = {
        blinkCardRecognizer.extractCvv = false
        blinkCardRecognizer.extractIban = false
        blinkCardRecognizer.extractExpiryDate = false
        
        recognizerList.append(blinkCardRecognizer!)
        return MBCRecognizerCollection(recognizers: recognizerList)
    }()

    recognizerRunner = MBCRecognizerRunner(recognizerCollection: recognizerCollection)

唯一的区别是,我之前已经定义了BlinkCardRecognizer和RecognizerRunner,所以这不会有任何不同:

代码语言:javascript
复制
private var recognizerRunner: MBCRecognizerRunner?
private var blinkCardRecognizer: MBCBlinkCardRecognizer?

在这里补充一下,如果您看到You are using time-limited license key!,这并不重要,它只是一个指示器,表明您正在使用有时间限制的键,它不应该影响扫描过程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66605408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档