二维码现在已深入到我们生活的方方面面了,手机支付、微信加好友、app下载、电子票务等方方面面都有它的身影。最近坐地铁又推出了扫二维码进出站。
最近一段时间,上海的很多地铁检票机器都装上了像下面这样的二维码扫描器
只需打开手机app上的二维码,对准扫描窗口扫一扫,就可以进站,到站后再扫一扫,就可以出站并自动扣款。
今天我们就来用Python实现一个简单的识别二维码的程序。
准备工作
识别二维码需要用到zbar,首先安装libzbar0,以Ubuntu为例
sudo apt-get install libzbar0
接着安装pyzbar和opencv
pip install pyzbar
pip install opencv-python
代码实现
接下来是我们的代码实现部分了,可以看到代码非常简单。
# -*- coding: utf-8 -*-
# filename: read_qrcode.py
import sys
from pyzbar.pyzbar import decode
import cv2
if len(sys.argv) < 2:
print "Usage: %s <image file>" % sys.argv[0]
sys.exit(1)
filepath = sys.argv[1]
image=cv2.imread(filepath) # 读入图片
result = decode(image) # 解码二维码
for item in result:
print item.type, item.data # 打印解码的数据
测试
我们拿下面的二维码来测试一下(因为知乎会自动转换二维码,这里不得已把图片作了下分割)
运行上面的read_qrcode.py,可以看到如下的结果:
QRCODE 欢迎关注“Python与数据分析”专栏
:)