【Python】二维码生成与读取

1、生成二维码

# 2021/11/27
import  qrcode  #v-5.3

#数据
data = 'https://www.baidu.com/'
#文件
filename = 'QRcodelearn.png'
#生成二维码
img = qrcode.make(data)
#保存到文件
img.save(filename)

2、读取二维码

import cv2
import numpy as np
# 读取图片
img = cv2.imread('QRcodelearn.png')

# 创建 QR 检测器实例
detector = cv2.QRCodeDetector()

# 使用检测器检测数据并解码
# data表示二维码的数据,
# bbox表示二维码四边形顶点坐标数组,
# straight_qrcode表示校正后生成的二进制格式的二维码
data, bbox, straight_qrcode = detector.detectAndDecode(img)
#
print(bbox[0])
#转换数据类型 float-》int
bbox = bbox.astype(np.uint64)
print(bbox[0])
# print(len(bbox[0]))
# print(straight_qrcode)
if bbox is not None:
    print(f'二维码的数据是:{data}')
    # 显示二维码图片的边线
    n_lines = len(bbox[0])
    for i in range(n_lines):
        point_1 = tuple(bbox[0][i])
        point_2 = tuple(bbox[0][(i+1) % n_lines])

        cv2.line(img, point_1, point_2, color=(255, 0, 0), thickness=2)  # 颜色为BGR

# 显示和退出处理
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

3、用摄像头识别二维码

# 2021/11/28
# 用摄像头识别二维码
import cv2
import numpy as np

# 初始化摄像头
cap = cv2.VideoCapture(0)

# 创建 QR 检测器实例
detector = cv2.QRCodeDetector()


while True:
    _, img = cap.read()
    # 检测解码
    data, bbox, _ = detector.detectAndDecode(img)

    # 标识二维码外框,识别数据
    if bbox is not None:
        bbox = bbox.astype(np.uint64)
        for i in range(len(bbox[0])):
            cv2.line(img, tuple(bbox[0][i]), tuple(bbox[0][(i+1) % len(bbox[0])]), color=(255, 0, 0), thickness=2)  # 颜色为BGR

    if data:
        print('数据是:', data)

    cv2.imshow('摄像头拍摄', img)
    if cv2.waitKey(1) == ord('q'):
        break
# 释放资源
cap.release()
cv2.destroyAllWindows()

你可能感兴趣的:(python,python,opencv)