Я пытаюсь прочитать текст, закодированный в штрих-коде — я использую pyzbar вот так:
from pyzbar import pyzbar
import cv2
img = cv2.imread("example/path")
barcodes = pyzbar.decode(img, symbols=[pyzbar.ZBarSymbol.CODE128])
print(barcodes)
Обычно это работает, но в последней партии штрих-кодов, которые я получил, pyzbar не может их прочитать - вывод pyzbar.decode равен []. Есть один пример:
Я попытался поместить его в онлайн-декодер, и он отлично его декодирует (также указано, что тип штрих-кода — CODE-128). Кто-нибудь знает, как я могу прочитать это на Python, пожалуйста?
zbar и другие необходимы для шагов предварительной обработки для воспроизведения штрих-кодов. Что я вижу на вашем изображении, так это то, что оно немного размыто и имеет низкий контраст. Вы можете попробовать шаги предварительной обработки или переключиться на библиотеку zxing, которая более точна по сравнению с zbar. Это тоже может помочь.
@YunusTemurlenk: изображение не размытое, оно слишком резкое. И контраст отличный.






На этом снимке много звона (контуры усилены черным цветом). Это может быть причиной провала. Попробуйте размыть изображение перед чтением. Бинаризация также работает без проблем.
Похоже, что
img = cv2.imread("example.png", cv2.IMREAD_GRAYSCALE)иimg = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU)[1]решают проблему, но действительно ли это решение?