目前,许多博客二维码定位与识别是分开的,定位采用单独的图像处理算法识别出三个矩形的中心位置,识别采用开源的二维码识别库,如zbar。本文将着重来介绍一种利用zbar库自带的定位算法来定位二维码的三个定位矩形,采用一般图像处理算法来定位二维码,不仅耗时,而且鲁棒性不强,利用zbar自带的定位方式在处理速度与鲁棒性都比一般图像处理定位方式都要优势。
要掌握此种方法,首先得会自行修改zbar库源码以及自行编译,其次得仔细了解其中的定位程序部分,相信大家如果仔细研究zbar源码,会知道其整个三个矩形中心点最后的输出函数,假设大家以找到zbar中三个定位矩形中心的返回函数已找到,但其输出的三个点的坐标却不会与相关的矩形区域对应,这是因为源码中坐标隐藏其与真实位置的关系,本人经过利用传统图像处理找到的三个矩形中心位置与源码中输出坐标做对比,发现真实的矩形中心位置与源码中输出坐标成线性关系可以用y=4*x-4这个线性关系表示真实矩形中心的横、纵坐标与源码输出对应横、纵坐标的关系,源码中相关计算步骤其实也有提示,就在对三个中心点坐标做了(>>2还是这个<<2变换去了),本人已修改zbar源码,增加输出源码中三个矩形中心的函数,并对其做y=4*x-4的变换,其最后的定位中心点可以较为准确的反映定位矩形的中心,且可以将对定位与识别有需求相关的项目利用一个zbar库解决问题,无需自己编写额外的定位定位,zbar自带的定位程序对关照等因素具有一定鲁棒性,也具有一定实时性。