zoukankan      html  css  js  c++  java
  • python二维码模块(qrcode)

    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()
  • 相关阅读:
    关于匹配的一些问题
    Codeforces Round #396 (Div. 2) A,B,C,D,E
    Codeforces Round #394 (Div. 2) A,B,C,D,E
    HDU 1848 SG函数博弈
    HDU 1536 S-Nim SG博弈
    HDU 2509 Be the Winner nim博弈变形
    HDU 1907 John nim博弈变形
    Codeforces Round #222 (Div. 1) D. Developing Game 线段树有效区间合并
    BZOJ 1031: [JSOI2007]字符加密Cipher 后缀数组
    HDU 5769 Substring 后缀数组
  • 原文地址:https://www.cnblogs.com/libra13179/p/11114432.html
Copyright © 2011-2022 走看看