我按照本教程阅读条形码和QR码与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)
字符串
如何修复代码或使用其他方法来准确读取货架产品上的条形码?
1条答案
按热度按时间w3nuxt5m1#
您可以做销售点扫描仪所做的事情:使用许多不同方向的线扫描产品,并查看这些线中的任何内容是否可靠地解码。
条形码有特定的时间限制(时间/边缘之间的距离不能是任意的),它们包含校验和.这就是你,或zbar,可以丢弃扫描线运行在一个对象在任意位置.你不必知道条形码在哪里.
你可以在不同的线条上对图像进行采样,并将这些采样馈送到zbar的低级接口,该接口在每次扫描时获取一系列强度值。