python 使用zbar解码二维码

使用python做二位码的解析。非常的方便,需要安装zbar,我使用的是python2.6,Windows Xp,下载的是zbar-0.10.win32-py2.6.exe可以到http://pypi.python.org/pypi/zbar/上面下载,这个安装包比较方便,源码安装比较麻烦,还需要安装Mingw,我在虚拟机下面是python2.7试一下安装没有成功。还需要安装zbar-0.10-setup.exe。安装完如下所示可以直接使用。将zar安装目录下面 的dll文件复制到Python26\Lib\site-packages下,就可以使用python的zbar模块了。


简单图片扫描:

#!/usr/bin/python
from sys import argv
import zbar
import Image
if len(argv) < 2: exit(1)
# create a reader
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
# obtain image data
pil = Image.open(argv[1]).convert('L')
width, height = pil.size
raw = pil.tostring()
# wrap image data
image = zbar.Image(width, height, 'Y800', raw)
# scan the image for barcodes
scanner.scan(image)
# extract results
for symbol in image:
    # do something useful with results
    print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data

# clean up
del(image)
视频检测:

#!/usr/bin/python
from sys import argv
import zebra

# create a Processor
proc = zbar.Processor()

# configure the Processor
proc.parse_config('enable')

# initialize the Processor
device = '/dev/video0'
if len(argv) > 1:
    device = argv[1]
proc.init(device)

# setup a callback
def my_handler(proc, image, closure):
    # extract results
    for symbol in image:
        if not symbol.count:
            # do something useful with results
            print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data

proc.set_data_handler(my_handler)

# enable the preview window
proc.visible = True

# initiate scanning
proc.active = True
try:
    proc.user_wait()
except zbar.WindowClosed:
    pass
以上内容都可以在 http://sourceforge.net/apps/mediawiki/zbar/index.php?title=ZBar_Wiki找到详细信息。(这边记录为了以后方便学习)
我通过使用wxpython做成一个小软件,wxpython默认的是unicode编码,使用qrcode进行生成二维码。但是其中的解码问题将我纠集了好久。经常将中文解析为乱码。通过不停的查找资料。解码部分做了如下修改,基本上能解析所有二维码。

try: 
                utf8Data = symbol.data.decode("gbk") 
            except UnicodeDecodeError: 
                try:
                    utf8Data = symbol.data.decode("utf-8").encode("gbk")
                except:
                    utf8Data=symbol.data.decode('utf-8').encode('sjis').decode('utf-8') 
分别对自己使用wxpython+qrcode生的二维码和 http://tool.anzhuoxiazai.com/在线工具生成的二位码进行解析。没有问题。


  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值