CIDetector无法识别相册中的二维码

       今天在做一个从本地相册中识别二维码的功能,在搜索后决定采用CIDetector这个原生的功能实现。具体代码在此不表了,网上一搜一大堆。都是可用的。

       在这篇文章重要说的是:CIDetector无法识别iPhone相机拍摄的二维码图片的问题。

      我的手机是iPhone6默认情况下使用相机拍摄的图片尺寸为:2448x3264在选择图片后通过CIDetector来识别的时候返回结果总是0,这让我感觉很奇怪。改变一下参数,做一个人脸识别,结果正确。这说明我调用的没有问题。又使用被我放弃很久的ZXingObjC来识别,还是失败。这说明恐怕和现有代码没有关系了。继续搜索,偶然间看到一位网友在v2ex上的回答

iluhcm  260 天前

zxing 之所以不好用是需要做优化的。

图片大小不能完全按照原始的尺寸来,我测试过,把图片缩小成 256 像素左右识别率比较高。目前不清楚是什么原理。

还有二维码的图像识别算法, GlobalHistogramBinarizer 和 HybridBinarizer 分别适用不同的场景,图片识别的话要看图片属于什么类型的,黑白的肯定是前者识别更有效,带有渐变的或者有阴影的则采用后一个算法。

总之二维码识别有许多层级的优化,目前正在研究中。

他提到,把图片缩小到256像素识别率较高,这就是真正的解决办法。

于是按照他的办法,缩小后,CIDetector、ZXingObjC测试全部通过。

测试发现CIDetector比ZXingObjC慢5倍多,耗时超过200毫秒。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容