如何使用OpenCV读取货架产品条形码

2024-05-15 11:24:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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)

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


Tags: 代码importimg产品npcv2barcodepts
1条回答
网友
1楼 · 发布于 2024-05-15 11:24:41

你可以做销售点扫描仪做的事情:用许多不同方向的线扫描产品,看看这些线中的任何东西是否能可靠地解码

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

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

相关问题 更多 >