Python里使用zbar识别二维码

今天研究数据库里的微信群二维码图片,很多人上传的图片并不是正确的群二维码,而是个人微信、公众号或者是一个手机充值流量的入口。为了把这些不合格的二维码挑选出来,只能一个个识别了。找了网上一些接口的,测试了一下不但限制频率为一秒2个,还很多识别不出来,看报错用的是zxing这个库,最后只能想其他方法。

在CentOS7上安装了zbar,没有找到el7的rpm,只好自己编译。研究出编译时使用一些参数可以避免安装一些不必要的包。为了virtualenv里的python能用,编译时候要指定安装到/usr。

编译文件不多,一下就完了。步骤如下:

./configure –disable-video –without-qt –without-gtk –without-x –prefix=/usr
make
sudo make install

应该还需要安装ImageMagick,libjpeg-devel,zlib-devel之类的库,python环境里需要安装zbar和PIL。

上测试代码:

import zbar
from PIL import Image

scanner = zbar.ImageScanner()
scanner.parse_config('enable')
img = Image.open('./test.jpg').convert('L')
w, h = img.size
zimg = zbar.Image(w, h, 'Y800', img.tobytes())

scanner.scan(zimg)

for s in zimg:
    print s.type, s.data

胶水语言就是强大,懂python的人应该能长寿。
识别速度觉得还可以,正确率非常高。基本上我的8w多的二维码都识别正确了。识别速度大概每秒几十张图吧,已经很满意。我的图片大小在10~50kb左右。

撰文记之,以便其他人有需要。不知不觉又通了个宵。。。

Python里使用zbar识别二维码》上有20条评论

  1. Abbey chow

    小虾,你好,请教一下,我把路由器安装Luci,结果中间报错了,我也没仔细看,就重启了下,结果路由开机就提示:Your JFFS2-partition seems full and overlayfs is mounted read-only. Please try to remove files from /overlay/upper/… and reboot!系统所有东西都不可操作了,能帮忙指点一二吗?谢谢了。

    回复

Creke进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>