安装库
安装 pyzbar:https://pypi.org/project/zbar/
-------欢迎加入python学习交流扣扣裙851211580-------
sudo apt-get install libzbar0
pip install pyzbar
安装 opencv
pip install opencv-python
完整代码
import cv2
from pyzbar.pyzbar import decode
import numpy as np
def IsQrRate(rate):
return np.logical_and(rate>0.15, rate<1.9)
#横向黑白比例判断
def IsQrColorRateX(image, flag):
# 默认处理的是二值化之后的图
nr = int(image.shape[0] / 2)
nc = image.shape[1]
bar = image[nr,:]
edge = np.where(bar[:-1]!=bar[1:])[0]
edge = np.array([-1] + list(edge) + [nc])
count = edge[1:] - edge[:-1] # 每个区域的长度
if len(count)<5: # 至少有5个区域,考虑到切割图象边界处可能会出现7个区域
return False
## 横向黑白比例1:1:3:1:1
maxCount = np.max(count)
maxIdx = np.argmax(count)
if maxIdx<2 or maxIdx>len(count)-3:
return False
rate = np.concatenate([count[maxIdx-2:maxIdx],count[maxIdx+1:maxIdx+3]],axis=0)/maxCount
rate = IsQrRate(rate)
return False not in rate
#纵向黑白比例判断
def IsQrColorRateY(image, flag):
# 默认处理的是二值化之后的图
nc = int(image.shape[1] / 2)
nr = image.shape[0]
bar = image[:,nc]
edge = np.where(bar[: