如何在Python中制作条形码阅读器?
条形码以图形表示和机器可读的形式表示数据。为了在Python中制作 Barcode Reader,我们使用pyzbar库。使用 pyzbar 我们可以解码一维条码和二维码。
这个 pyzbar 可以根据条码对象返回 3 个字段:
- 类型:有多种条码可用。它们由唯一的代码名称区分,如 CODE-128、Code-11、CODE-39 等。如果 pyzabr 检测到的符号是 QRcode,则该类型是 QR-CODE。
- 数据:这是嵌入在条码中的数据。根据条形码的类型,此数据有多种类型(字母数字、数字、二进制等)。
- 位置:这是位于代码中的点的集合。对于条形码,这些点是起点和终点线边界。对于 QRcode,它是与 QR 码四边形的四个角对应的四个点的列表。
安装:
pip install pyzbar
pyzbar 提供 rect 方法来定位图像中的条形码。 Rect 代表一个矩形,它会给你条码的坐标。我们还可以解码一张图像中包含的多个条形码。使用以下步骤,我们将制作一个条码记录器。 (确保您安装了两个库)
方法:
- 导入cv2。
- 从 pyzbar 导入解码函数。
- 从用户那里获取图像。
- 使用 pyzbar 解码该图像
- 在给定的图像中找到条形码
- 打印数据和图像类型
- 显示定位的条形码。
下面是实现
Python3
# Importing library
import cv2
from pyzbar.pyzbar import decode
# Make one method to decode the barcode
def BarcodeReader(image):
# read the image in numpy array using cv2
img = cv2.imread(image)
# Decode the barcode image
detectedBarcodes = decode(img)
# If not detected then print the message
if not detectedBarcodes:
print("Barcode Not Detected or your barcode is blank/corrupted!")
else:
# Traverse through all the detected barcodes in image
for barcode in detectedBarcodes:
# Locate the barcode position in image
(x, y, w, h) = barcode.rect
# Put the rectangle in image using
# cv2 to heighlight the barcode
cv2.rectangle(img, (x-10, y-10),
(x + w+10, y + h+10),
(255, 0, 0), 2)
if barcode.data!="":
# Print the barcode data
print(barcode.data)
print(barcode.type)
#Display the image
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == "__main__":
# Take the image from user
image="Img.jpg"
BarcodeReader(image)
输出:
b'GeeksForGeek-112021'
CODE128