ZXing扫描,是拿到摄像头的每一帧,然后对其根据如下公式做灰度化
f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))
之后做全局直方图二值化的方法,最后按照ISO/IEC 18004 规范进行解析。
上面有提过二维码是通过全局直方图二值化后,按照ISO标准解碼,实际上是,按照1:1:3:1:1去寻找那三个寻像图形,就是标志性的大方块。然后圈出二维码大小再去解碼的。也就是说,再没设定边界的情况下全屏都可以。
而条形码完全不同,他是在Detect Center那个点,画一个无限延伸的米字型,然后去判断每一条在线能否解析出条形码所需要的0101010序列。而iOS默认的Center是 Layer 的 Center