《OpenCV系列教程》
项目位置:OpenCV-Sample
代码位置:102-ScannerQRCodeWithZbar.py
OpenCV自带的二维码识别工具,能力较差,尤其是在如下的情况下经常识别不出来。
![]() | ![]() | ![]() |
sudo apt-get install libzbar-dev
然后安装zBar的Python包
pip install pyzbar
实际代码如下:
from __future__ import print_function
import pyzbar.pyzbar as pyzbar
import numpy as np
import cv2
def decode(im):
# 在这里查找二维码
decodedObjects = pyzbar.decode(im)
# 打印出结果
for obj in decodedObjects:
print('Type : ', obj.type)
print('Data : ', obj.data, '\n')
return decodedObjects
def display(im, decodedObjects):
for decodedObject in decodedObjects:
points = decodedObject.polygon
if len(points) > 4:
hull = cv2.convexHull(np.array([point for point in points], dtype=np.float32))
hull = list(map(tuple, np.squeeze(hull)))
else:
hull = points;
n = len(hull)
for j in range(0, n):
cv2.line(im, hull[j], hull[(j + 1) % n], (255, 0, 0), 3)
cv2.imshow("Results", im);
cv2.waitKey(0);
# Read image
im = cv2.imread('./res/QR3.jpeg')
decodedObjects = decode(im)
display(im, decodedObjects)