qrcode模块安装
运行命令行工具(cmd),使用pip安装工具分别安装qrcode。
pip install qrcode
先来个简单的例子
import qrcode # 二维码内容 data = "hello world" # 生成二维码 img = qrcode.make(data=data) # 直接显示二维码 img.show() # 保存二维码为文件 # img.save("hello.jpg")
效果
我们来修改配置等
import qrcode # 二维码内容 data = "hello world" qr = qrcode.QRCode( version=2, error_correction=qrcode.constants.ERROR_CORRECT_L,#二维码的纠错范围 box_size=10,# 每个点(方块)中的像素个数 border=4#二维码距图像外围边框距离,默认为4,而且相关规定最小为4 ) qr.add_data(data) qr.make(fit=True) # 生成二维码 img = qr.make_image() # 直接显示二维码 img.show() # 保存二维码为文件 # img.save("hello.jpg")
安装pyzbar
pip install pyzbar
来测试
import pyzbar.pyzbar as pyzbar from PIL import Image,ImageEnhance image = "hello.jpg" img = Image.open(image) #img = ImageEnhance.Brightness(img).enhance(2.0)#增加亮度 #img = ImageEnhance.Sharpness(img).enhance(17.0)#锐利化 #img = ImageEnhance.Contrast(img).enhance(4.0)#增加对比度 #img = img.convert('L')#灰度化 img.show() barcodes = pyzbar.decode(img) for barcode in barcodes: barcodeData = barcode.data.decode("utf-8") print(barcodeData)
测试一下
python3 + opencv +pyzbar 摄像头检测二维码并获取二维码内容
https://blog.csdn.net/zx66zx/article/details/82785334
# coding:utf8 import cv2 import pyzbar.pyzbar as pyzbar def decodeDisplay(image): barcodes = pyzbar.decode(image) for barcode in barcodes: # 提取条形码的边界框的位置 # 画出图像中条形码的边界框 (x, y, w, h) = barcode.rect cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2) # 条形码数据为字节对象,所以如果我们想在输出图像上 # 画出来,就需要先将它转换成字符串 barcodeData = barcode.data.decode("utf-8") barcodeType = barcode.type # 绘出图像上条形码的数据和条形码类型 text = "{} ({})".format(barcodeData, barcodeType) cv2.putText(image, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 0, 125), 2) # 向终端打印条形码数据和条形码类型 print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData)) return image def detect(): camera = cv2.VideoCapture(0) while True: # 读取当前帧 ret, frame = camera.read() # 转为灰度图像 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) im=decodeDisplay(gray) cv2.waitKey(5) cv2.imshow("camera", im) camera.release() cv2.destroyAllWindows() if __name__ == '__main__': detect()