当在同一水平线上扫描包含非常相似的条形码的图像时,尽管条形码已正确解码,但条形码的位置却变得很奇怪。
我意识到了这个问题,因为我们使用EAN13来标记货架上的位置。因此,条形码非常相似,有几个处于同一货架级别。 因此,我尝试了一下,似乎Pyzbar的条形码存在问题(相同的条形码甚至更糟)。
这是我创建的要测试的图像: Image with barcodes
这是一个小脚本,可以打印条形码及其位置,并使用矩形保存图像。
在测试图像中,您应该看到第一行被弄乱了,但是第二行很好。
from pyzbar.pyzbar import decode
import cv2
img = cv2.imread('test.png')
barcodes = decode(img)
for decodedObject in barcodes:
print(decodedObject.data.decode("utf-8"))
print(decodedObject.rect)
start_point = (decodedObject.rect.left, decodedObject.rect.top)
end_point = (decodedObject.rect.left + decodedObject.rect.width,
decodedObject.rect.top + + decodedObject.rect.height)
cv2.rectangle(img, start_point, end_point, (0, 255, 0), 3)
cv2.imwrite("result.jpg",img)
我不确定这是zbar还是pyzbar中的错误,还是我做错了什么。 任何帮助将不胜感激