如何使用 Python 生成和讀取條形碼
當(dāng)您從商店購(gòu)買商品時(shí),您所購(gòu)買的物品上的平行黑條紋,具有不同寬度,被稱為條形碼。條形碼是一種將數(shù)據(jù)以視覺、機(jī)器可讀的方式表示的方法。條形碼被用于存儲(chǔ)有關(guān)產(chǎn)品的信息,以便進(jìn)行方便的識(shí)別和追蹤。各個(gè)行業(yè)都使用條形碼進(jìn)行庫(kù)存管理。
使用Python,您可以生成條形碼,掃描并讀取條形碼的內(nèi)容。
如何生成和自定義條形碼 以下步驟展示了如何使用python-barcode庫(kù)生成條形碼。
1、安裝所需庫(kù)
打開您的終端或命令提示符,運(yùn)行以下pip命令來安裝所需的庫(kù)。確保您的機(jī)器上已安裝了pip。
linuxmi@linuxmi ~/www.linuxmi.com
% pip install python-barcode
2、導(dǎo)入所需模塊
在您的腳本中,包含以下導(dǎo)入語(yǔ)句,以導(dǎo)入生成條形碼所需的模塊。
import barcode
from the barcode.writer import ImageWriter
編寫器負(fù)責(zé)在不同格式中生成和保存條形碼圖像。python-barcode 庫(kù)提供了不同的條形碼編寫器。在這里,您將使用ImageWriter 類,該類將條形碼渲染為圖像。
3、生成條形碼的代碼
python-barcode庫(kù)提供了各種條形碼格式,例如Code39、Code128、EAN13和ISBN-10,用于生成條形碼。
def generate_barcode(data, barcode_format, options=None):
# 獲取與指定格式對(duì)應(yīng)的條形碼類
barcode_class = barcode.get_barcode_class(barcode_format)
# 使用提供的數(shù)據(jù)和格式創(chuàng)建條形碼圖像
barcode_image = barcode_class(data, writer=ImageWriter())
# 將條形碼圖像保存到名為"linuxmi"的文件中,帶有指定的選項(xiàng)
barcode_image.save("linuxmi", options=options)
generate_barcode函數(shù)根據(jù)給定的數(shù)據(jù)和格式(barcode_format)生成條形碼,并將條形碼圖像保存到文件linuxmi.png中。文件擴(kuò)展名取決于您使用的寫入器類別。
4、生成和自定義條形碼
要生成條形碼,調(diào)用 generate_barcode 函數(shù)并傳遞所需的參數(shù)。
generate_barcode("www.linuxmi.com", "code128")
生成的條形碼
編寫器接受多個(gè)選項(xiàng),使您能夠自定義條形碼。自定義選項(xiàng)包括修改條形碼的大小、字體、顏色等。您可以參考python-barcode文檔,以獲得完整的常見編寫器選項(xiàng)列表。
generate_barcode("www.linuxmi.com", "code128", options={"foreground":"red",
"center_text": False,
"module_width":0.4,
"module_height":20})
在自定義選項(xiàng)中,您可以調(diào)整前景顏色、背景顏色,甚至可以選擇是否在條形碼上顯示文本。
如何掃描和解碼條形碼
以下步驟介紹了如何使用Python的pyzbar庫(kù)掃描和解碼條形碼。
1、安裝所需的庫(kù)
要掃描和解碼條形碼,您需要安裝以下庫(kù):
brew install zbar # Mac OS X
sudo apt-get install libzbar0 # Linux OS
pip install pyzbar opencv-python
2、導(dǎo)入所需的模塊
安裝完庫(kù)后,在腳本中添加以下導(dǎo)入語(yǔ)句以導(dǎo)入必要的模塊。
import cv2
from pyzbar import pyzbar
3、從圖像中掃描條形碼
從圖像文件中掃描條形碼的方法如下:
使用OpenCV的imread函數(shù)加載圖像。這將返回一個(gè)numpy.ndarray實(shí)例。
將輸出數(shù)組傳遞給pyzbar.decode以進(jìn)行檢測(cè)和解碼。您還可以傳遞PIL.Image的實(shí)例。
def scan_barcode_from_image(image_path):
# 從提供的文件路徑讀取圖像
image = cv2.imread(image_path)
# 使用pyzbar從圖像中解碼條形碼
barcodes = pyzbar.decode(image)
# 遍歷檢測(cè)到的條形碼并從中提取數(shù)據(jù)
for barcode in barcodes:
# 使用UTF-8編碼
barcode_data = barcode.data.decode("utf-8")
barcode_type = barcode.type
print("Barcode Data:", barcode_data)
print("Barcode Type:", barcode_type)
該函數(shù)接受image_path參數(shù),讀取圖像,解碼圖像中存在的任何條形碼,并打印每個(gè)檢測(cè)到的條形碼的解碼數(shù)據(jù)和類型。
scan_barcode_from_image("linuxmi.png")
從網(wǎng)絡(luò)攝像頭流中掃描條形碼
您還可以借助Python OpenCV庫(kù)從網(wǎng)絡(luò)攝像頭流中實(shí)時(shí)掃描和讀取條形碼。
def scan_barcode_from_webcam():
# 初始化默認(rèn)網(wǎng)絡(luò)攝像頭 (index 0) 視頻捕獲
video_capture = cv2.VideoCapture(0)
while True:
# 從網(wǎng)絡(luò)攝像頭流中獲取一幀
_, frame = video_capture.read()
# 解碼幀中的條形碼
barcodes = pyzbar.decode(frame)
# 處理檢測(cè)到的條形碼
for barcode in barcodes:
# 提取條形碼數(shù)據(jù)和類型并打印
barcode_data = barcode.data.decode("utf-8")
barcode_type = barcode.type
print("Barcode Data:", barcode_data)
print("Barcode Type:", barcode_type)
# 檢查退出條件:按下'q'退出循環(huán)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
# 釋放視頻捕獲并關(guān)閉OpenCV窗口
video_capture.release()
cv2.destroyAllWindows()
scan_barcode_from_webcam()
scan_barcode_from_webcam函數(shù)連續(xù)捕獲網(wǎng)絡(luò)攝像頭的幀,解碼幀中存在的任何條形碼,提取條形碼的信息并打印出來。按鍵盤上的字母q鍵可以退出。
通過Python生成和讀取條形碼和二維碼
使用Python,生成和讀取條形碼變得輕松高效。按照上述步驟,您可以生成各種適合您需求的條形碼。
QR碼(Quick Response codes)是一種二維碼,可以通過配備攝像頭和QR碼閱讀器應(yīng)用程序的智能手機(jī)、平板電腦或其他設(shè)備進(jìn)行掃描和閱讀。使用Python的qrcode庫(kù),您可以高效地生成、掃描和閱讀QR碼。