【问题标题】:How to read shelf product barcode using OpenCV如何使用 OpenCV 读取货架产品条形码
【发布时间】:2020-11-30 16:53:42
【问题描述】:

我正在按照本教程使用 OpenCV 读取条形码和二维码。下面的代码可以检测 QR 条形码,但我想使用条形码检测器读取商店产品上的条形码,例如

如果条形码整齐地打印在白纸上或显示在大计算机屏幕上,则此代码有效。

import cv2
import numpy as np
from pyzbar.pyzbar import decode

cap = cv2.VideoCapture(0)
cap.set(3,640)
cap.set(4,480)


while True:

success, img = cap.read()
for barcode in decode(img):
    myData = barcode.data.decode('utf-8')
    print(myData)

    if myData in myDataList:
        myOutput = 'Authorized'
        myColor = (0,255,0)
    else:
        myOutput = 'Un-Authorized'
        myColor = (0, 0, 255)

    pts = np.array([barcode.polygon],np.int32)
    pts = pts.reshape((-1,1,2))
    cv2.polylines(img,[pts],True,myColor,5)
    pts2 = barcode.rect
    cv2.putText(img,myOutput,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX,
                0.9,myColor,2)

cv2.imshow('Result',img)
cv2.waitKey(1)

如何修复代码或使用其他方法准确读取货架产品上的条形码?

【问题讨论】:

    标签: python tensorflow opencv computer-vision


    【解决方案1】:

    您可以做销售点扫描仪所做的事情:使用横跨产品的许多不同方向的线扫描产品,并查看这些线中的任何内容是否可靠解码。

    条形码具有特定的时间限制(边缘之间的时间/距离不能是任意的),并且它们包含校验和。这就是您或 zbar 可以丢弃在任意位置穿过对象的扫描线的方式。您不必知道条形码在哪里。

    您可以跨行对图像进行采样,并将这些样本提供给 zbar 的低级接口,该接口在每次扫描时获取一系列强度值。

    【讨论】:

    • 这就是我正在尝试使用 opencv/tensorflow 和相机构建的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2023-03-27
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    相关资源
    最近更新 更多