用 Python 和 OpenCV 检测图片上的条形码

2023-09-20

用 Python 和 OpenCV 检测图片上的条形码

简介

本文介绍如何使用 Python 和 OpenCV 库来检测图片上的条形码。条形码在现代生活中广泛应用于商品识别、库存管理等领域。通过本文的指导,你将学会如何编写一个简单的 Python 脚本来检测图片中的条形码,并提取相关信息。

准备工作

在开始之前,请确保你已经安装了以下工具和库:

  • Python 3.x
  • OpenCV
  • ZBar(用于条形码解码)

你可以使用以下命令来安装所需的库:

pip install opencv-python-headless zbar

代码实现

以下是一个简单的 Python 脚本,用于检测图片中的条形码并输出其内容:

import cv2
import pyzbar.pyzbar as pyzbar

def detect_barcode(image_path):
    # 读取图片
    image = cv2.imread(image_path)
    
    # 转换为灰度图像
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
    # 检测条形码
    barcodes = pyzbar.decode(gray)
    
    # 遍历检测到的条形码
    for barcode in barcodes:
        # 提取条形码的边界框位置
        (x, y, w, h) = barcode.rect
        
        # 绘制边界框
        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
        
        # 提取条形码数据
        barcode_data = barcode.data.decode("utf-8")
        barcode_type = barcode.type
        
        # 在图片上显示条形码数据
        text = "{} ({})".format(barcode_data, barcode_type)
        cv2.putText(image, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
        
        # 打印条形码数据
        print("[INFO] Found {} barcode: {}".format(barcode_type, barcode_data))
    
    # 显示结果图片
    cv2.imshow("Barcode Detection", image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

# 使用示例
detect_barcode("path_to_your_image.jpg")

运行结果

运行上述脚本后,程序将读取指定路径的图片,检测其中的条形码,并在图片上绘制边界框和条形码数据。最终结果将显示在一个窗口中。

总结

通过本文的介绍,你已经学会了如何使用 Python 和 OpenCV 来检测图片中的条形码。这个方法可以应用于各种实际场景,如商品管理、库存追踪等。希望本文对你有所帮助!

下载链接

用Python和OpenCV检测图片上的条形码分享