日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python解析二维码_Python二维码生成识别实例详解

發布時間:2024/7/23 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python解析二维码_Python二维码生成识别实例详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在 JavaWeb 開發中,一般使用 Zxing 來生成和識別二維碼,但是,Zxing 的識別有點差強人意,不少相對模糊的二維碼識別率很低。不過就最新版本的測試來說,識別率有了現顯著提高。

對比

在沒接觸 Python 之前,曾使用 Zbar 的客戶端進行識別,測了大概幾百張相對模糊的圖片,Zbar的識別速度要快很多,識別率也比 Zxing 稍微準確那邊一丟丟,但是,稍微模糊一點就無法識別。相比之下,微信和支付寶的識別效果就逆天了。

代碼案例

# -*- coding:utf-8 -*-

import os

import qrcode

import time

from PIL import Image

from pyzbar import pyzbar

"""

# 升級 pip 并安裝第三方庫

pip install -U pip

pip install Pillow

pip install pyzbar

pip install qrcode

"""

def make_qr_code_easy(content, save_path=None):

"""

Generate QR Code by default

:param content: The content encoded in QR Codeparams

:param save_path: The path where the generated QR Code image will be saved in.

If the path is not given the image will be opened by default.

"""

img = qrcode.make(data=content)

if save_path:

img.save(save_path)

else:

img.show()

def make_qr_code(content, save_path=None):

"""

Generate QR Code by given params

:param content: The content encoded in QR Code

:param save_path: The path where the generated QR Code image will be saved in.

If the path is not given the image will be opened by default.

"""

qr_code_maker = qrcode.QRCode(version=2,

error_correction=qrcode.constants.ERROR_CORRECT_M,

box_size=8,

border=1,

)

qr_code_maker.add_data(data=content)

qr_code_maker.make(fit=True)

img = qr_code_maker.make_image(fill_color="black", back_color="white")

if save_path:

img.save(save_path)

else:

img.show()

def make_qr_code_with_icon(content, icon_path, save_path=None):

"""

Generate QR Code with an icon in the center

:param content: The content encoded in QR Code

:param icon_path: The path of icon image

:param save_path: The path where the generated QR Code image will be saved in.

If the path is not given the image will be opened by default.

:exception FileExistsError: If the given icon_path is not exist.

This error will be raised.

:return:

"""

if not os.path.exists(icon_path):

raise FileExistsError(icon_path)

# First, generate an usual QR Code image

qr_code_maker = qrcode.QRCode(version=4,

error_correction=qrcode.constants.ERROR_CORRECT_H,

box_size=8,

border=1,

)

qr_code_maker.add_data(data=content)

qr_code_maker.make(fit=True)

qr_code_img = qr_code_maker.make_image(fill_color="black", back_color="white").convert('RGBA')

# Second, load icon image and resize it

icon_img = Image.open(icon_path)

code_width, code_height = qr_code_img.size

icon_img = icon_img.resize((code_width // 4, code_height // 4), Image.ANTIALIAS)

# Last, add the icon to original QR Code

qr_code_img.paste(icon_img, (code_width * 3 // 8, code_width * 3 // 8))

if save_path:

qr_code_img.save(save_path)

else:

qr_code_img.show()

def decode_qr_code(code_img_path):

"""

Decode the given QR Code image, and return the content

:param code_img_path: The path of QR Code image.

:exception FileExistsError: If the given code_img_path is not exist.

This error will be raised.

:return: The list of decoded objects

"""

if not os.path.exists(code_img_path):

raise FileExistsError(code_img_path)

# Here, set only recognize QR Code and ignore other type of code

return pyzbar.decode(Image.open(code_img_path), symbols=[pyzbar.ZBarSymbol.QRCODE], scan_locations=True)

if __name__ == "__main__":

# # 簡易版

# make_qr_code_easy("make_qr_code_easy", "make_qr_code_easy.png")

# results = decode_qr_code("make_qr_code_easy.png")

# if len(results):

# print(results[0].data.decode("utf-8"))

# else:

# print("Can not recognize.")

#

# # 參數版

# make_qr_code("make_qr_code", "make_qr_code.png")

# results = decode_qr_code("make_qr_code.png")

# if len(results):

# print(results[0].data.decode("utf-8"))

# else:

# print("Can not recognize.")

#

# 帶中間 logo 的

# make_qr_code_with_icon("https://blog.52itstyle.vip", "icon.jpg", "make_qr_code_with_icon.png")

# results = decode_qr_code("make_qr_code_with_icon.png")

# if len(results):

# print(results[0].data.decode("utf-8"))

# else:

# print("Can not recognize.")

# 識別答題卡二維碼 16 識別失敗

t1 = time.time()

count = 0

for i in range(1, 33):

results = decode_qr_code(os.getcwd()+"\\img\\"+str(i)+".png")

if len(results):

print(results[0].data.decode("utf-8"))

else:

print("Can not recognize.")

count += 1

t2 = time.time()

print("識別失敗數量:" + str(count))

print("測試時間:" + str(int(round(t2 * 1000))-int(round(t1 * 1000))))

測試了32張精挑細選的模糊二維碼:

識別失敗數量:1

測試時間:130

使用最新版的 Zxing 識別失敗了三張。

源碼

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的python解析二维码_Python二维码生成识别实例详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。