Инверсный штрихкод (ZBar)
От: Артём Австралия жж
Дата: 23.11.23 19:21
Оценка:
Такой cornercase: если штрихкод не чёрным цветом, а наоборот, белым на чёрном/сером фоне, то zbar его не распознаёт. Я попробовал сделать инверсию цвета с фотографии такого штрихкода в gimpе- в таком случае zbar распознал совершенно неправильный код из инверсного штрихкода.
Можно ли применить какой-то реалтаймовый фильтр на основе opencv покадрово, чтобы edge detection и заливать полоски штрихкода или квадраты qr чёрным всегда- вне зависимости это чёрным по светному, иои светлым по чёрному? Как шаг preprocessing перед zbar.

Update
добавил опциональный шаг — вторая попытка ZBar на инверсных цветах, и это помогло в ряде случаев.
Более тяжелые случаи- где белым по-чёрному и неизвестный ZBar-у формат штрих кода, остались проблемой.

Неужели придётся всё-таки докопать до того, как собирать с emscripten самому, форкать ZBar и дореализовывать отсутствующие форматы самому?
Отредактировано 08.12.2023 0:33 Артём . Предыдущая версия . Еще …
Отредактировано 23.11.2023 19:22 Артём . Предыдущая версия .
Re: Инверсный штрихкод (ZBar)
От: Ромашка Украина  
Дата: 08.12.23 02:25
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Такой cornercase: если штрихкод не чёрным цветом, а наоборот, белым на чёрном/сером фоне, то zbar его не распознаёт.


Ты не поверишь — железные сканеры тоже такое очень не любят.

Аё>Update

Аё>добавил опциональный шаг — вторая попытка ZBar на инверсных цветах, и это помогло в ряде случаев.

Это плохой путь. Не нужно читать то, что нечитабельно, это чревато.

Аё>Более тяжелые случаи- где белым по-чёрному и неизвестный ZBar-у формат штрих кода, остались проблемой.


Не факт, что неизвестный. Попробуй отрубить ненужное и может быть прочитает. Железные сканеры тоже нужно настраивать, иначе они не все читают.

Аё>Неужели придётся всё-таки докопать до того, как собирать с emscripten самому, форкать ZBar и дореализовывать отсутствующие форматы самому?


Там форматирование пересекается. Грубо говоря если врублено определение формата А, формат Б оно читать не будет. Чтобы оно начало читать формат Б, нужно в настройках вырубить распознавание формата А. Конкретные стандарты извини не помню, я этим лет 20 назад занимался.


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[2]: Инверсный штрихкод (ZBar)
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 08.12.23 06:32
Оценка:
Здравствуйте, Ромашка, Вы писали:

Аё>>добавил опциональный шаг — вторая попытка ZBar на инверсных цветах, и это помогло в ряде случаев.

Р>Это плохой путь. Не нужно читать то, что нечитабельно, это чревато.

Наоборот — это самый логичный и простой путь. Плохой — это самому доработать детектор, чтобы он мог работать одновременно и с белыми, и с чёрными. Заколебаешься собирать датасет, учить, ловить баги.
Re[3]: Инверсный штрихкод (ZBar)
От: Ромашка Украина  
Дата: 08.12.23 15:44
Оценка:
Здравствуйте, Nuzhny, Вы писали:
N>Наоборот — это самый логичный и простой путь.

Самый логичный и простой путь — ограничить чтение по максимуму. У тебя по процессу должен быть EAN13? Читать только EAN13, остальные штрихкоды просто игнорировать. Не читается как EAN13? Забить, распечатать свой EAN13, налепить и поехали дальше. По процессу возможны несколько стандартов? Выставить префиксы и обрабатывать отдельно. Потому что по ту сторону штрихкода всегда сидит человек и его логика иногда очень странная. Поэтому нуегонафиг, шаг в сторону — расстрел.


Всё, что нас не убивает, ещё горько об этом пожалеет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.