zxing 如何识别反转二维码

简介: 说起二维码扫描,估计很多人用的是 zxing 吧。然而 zxing 虽然好用,但是却有一些坑。这边分析一下自己实际项目遇到的一个坑。什么坑呢?下面举个栗子你就懂了。

说起二维码扫描,估计很多人用的是 zxing 吧。

然而 zxing 虽然好用,但是却有一些坑。

这边分析一下自己实际项目遇到的一个坑。

什么坑呢?

下面举个栗子你就懂了。

这边生成二维码使用的是网络上的一个网站联图

以百度为例,正常情况生成的二维码如下:

百度正常二维码

这种情况下用 zxing 分分钟就可以识别出来。

但是假设我将前景色和后景色调换,生成的二维码如下:

百度反转二维码

这种情况下 zxing 就识别不出了。

所以说这种时候就很无奈了。毕竟有些场景就需要用到反转二维码。

所以本篇说的 zxing 的坑就是无法识别反转二维码

咋办呢?凉拌。

这种时候就需要去源码看看了。

看一下二维码解析的代码逻辑在哪?

通过一番折腾,跟踪调试,最后定位到如下位置:

https://github.com/zxing/zxing/blob/master/android/src/com/google/zxing/client/android/DecodeHandler.java#L80

关键代码:(DecodeHandler.java 里面的 decode 方法)

BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

如果要识别上面的反转百度二维码,需要如何处理呢?

很简单,只需要将上面的代码改为:

BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source.invert()));

即可。

到了这里,相信聪明的你应该知道如何让 zxing 同时支持两种格式了。

只需要设置一个计数器,然后在指定次数(比如前 3 次)里面使用

BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

在另外次数(比如后 3 次)里面使用

BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source.invert()));

交替使用即可。

这样就可以解决正转和反转二维码的识别了。

NOTE:

  1. 通过交替识别可能会降低识别速度,因此次数设置为多少需要自己调试把控。
  2. 计数时注意避免次数溢出。

如果你有其他方法,欢迎留言讨论。

相关文章
|
边缘计算 并行计算 算法
Opencv+ZBar识别条形码、二维码
Opencv+ZBar识别条形码、二维码
606 0
Opencv+ZBar识别条形码、二维码
28用zxing对二维码的解析
28用zxing对二维码的解析
98 0
|
开发工具 计算机视觉
配置zbar识别二维码(转载)
原文地址:http://blog.csdn.net/dcrmg/article/details/52108258  二维码解码器Zbar+VS2012开发环境配置 Zbar条码解码器是一个开源的二维码(包括条形码)解码器,可以识别来至于视频流,图像文件、手持扫码器和视频设备(如摄像头)等二维码识别,支持EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, QR Code(二维码)等常用编码方式的条形码/二维码。
2440 0
|
程序员 C# 图形学
C# 生成二维码,彩色二维码,带有Logo的二维码及普通条形码
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心!    废话少说,咱直接进入正题:    目前来说,比较流行的二维码生成方式有两种:一种是:QrCode.Net和谷歌的Zxing.Net,我个人比较倾向于使用ZXing.Net,今天本篇博客主要讲解Zxing.Net的使用。
1886 0
|
图形学
Unity3D 生成&识别二维码
Unity扫描识别二维码 用WebCamTexture 获得摄像头数据,并把他付给UI层的RawImage.这个用来展示摄像头拍摄的内容画面。 private void CreateWebcamTex(string deviceName){ mWebCamTexture = new WebCamTexture(deviceName,1280, 720); rawImage.
1636 0
QRCode二维码生成方案及其在带LOGO型二维码中的应用(2)
原文:QRCode二维码生成方案及其在带LOGO型二维码中的应用(2) 续前:QRCode二维码生成方案及其在带LOGO型二维码中的应用(1)  http://blog.csdn.net/johnsuna/article/details/8525038 首先我们来看看二维码的符号字符区域,然后再看看其编码流程。
1425 0