Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/68: Рейтинг темы: голосов - 68, средняя оценка - 4.71
126 / 44 / 1
Регистрация: 04.11.2011
Сообщений: 241
1

Штрих-код

17.02.2013, 12:37. Показов 14052. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Учебная задача: чтение штрих-кода с картинки или web-камеры.
Подскажите как можно распознать простенький штрих-код (ITF-14 к примеру) через WEB-камеру или с картинки.
Покопал интернет - для создания компоненты есть, а вот для чтения исходников не нашел ...
Касательно ITF-14 загадкой остается следующее: допускается 100% увеличение или 25% уменьшение кода (насколько я понял). Это будет играть роль при получении через WEB-камеру или с картинки? Логически можно после каждого цикла определения сравнивать с ключем, но как это реализовать не представляю.
Заранее спасибо всем отозвавшимся!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2013, 12:37
Ответы с готовыми решениями:

штрих-код
Скачала шрифт Barcode.ttf. Задача в том, что нужно генерировать штрих-код в БД Interbase. Есть ли...

Сканер штрих код
Здравствуйте уважаемые! в общем никто не сталкивался программировать для устройства сканер штрих...

штрих - код в FastReport
Ребят, у меня проблема. Все поля выводятся, но когда я добавляю штрих-код и подключаю его к...

Компонент Штрих-кода
Здравствуйте! Скажите есть ли такой компонент QR (2 мерный) для того что бы я его в квик репорт мог...

24
126 / 44 / 1
Регистрация: 04.11.2011
Сообщений: 241
17.02.2013, 16:06  [ТС] 3
Спасибо за материал, буду штудировать!
PS: Сколько интересного на сайте-то
0
126 / 44 / 1
Регистрация: 04.11.2011
Сообщений: 241
27.02.2013, 18:24  [ТС] 4
Что-то не получается у меня. К веб-камере подключается, снимок сохраняет, а вот zbarcode не хочет работать - не распознает. Даже не с фотографии а с рисунка EAN-13 кода пишет "scanned 0 barcode symbols from 1 images" ...
Изображения
 
0
126 / 44 / 1
Регистрация: 04.11.2011
Сообщений: 241
27.02.2013, 18:50  [ТС] 5
Уважаемый raxp, при создании статьи Вы наверно сталкивались с этой проблемой?
PS: Юзал скомпилированное Вами приложение. Подключается к вебке, делает снимок, но zbar не распознает ...
Потом руками из Far запускал - тот же результат (постом выше). В чем может быть проблема?
0
10234 / 6612 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
27.02.2013, 19:14 6
...а от того, что вы будете по всем контактам стучать я быстрее не появлюсь, это форум, а не чат. Уведомление приходит всем отписавшимся в теме.

Ваша картинка в общем кадре имеет слишком малую площадь. Для нормальной работы алгоритма распознавания само изображение в кадре должно занимать хотя бы четверть кадра, а у вас размер картинки 121х64 пкс в общем кадре 640х480 пкс. Увеличьте изображение штрих-кода и все будет оки:
Штрих-код
Штрих-код
1
126 / 44 / 1
Регистрация: 04.11.2011
Сообщений: 241
27.02.2013, 22:04  [ТС] 7
Цитата Сообщение от raxp Посмотреть сообщение
...а от того, что вы будете по всем контактам стучать я быстрее не появлюсь, это форум, а не чат. Уведомление приходит всем отписавшимся в теме.
Сначала так хотел спросить, но потом сюда все же написал - думал будет долгая дискуссия. Спасибо за ответ! Все работает!
0
0 / 0 / 0
Регистрация: 14.06.2011
Сообщений: 12
26.03.2013, 11:41 8
У меня точно такая же трабла. Хотя, штрихкод на картинке - практически на весь экран.
Пробовал заграбленную пикчу проетстировать с помощью проекта в папке "тест распознавания". Результат такой-же.
Миниатюры
Штрих-код  
0
10234 / 6612 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.03.2013, 12:28 9
...если сама либа справится не может, то и проект граба ни при чем.
...приложите вашу пикчу в теме, вечером посмотрю (сейчас под андроидом).
0
0 / 0 / 0
Регистрация: 14.06.2011
Сообщений: 12
26.03.2013, 12:38 10
Весь прикол в том, что если скопировать файл grab.bmp в папку "тест распознавания" и переименовать его в 3.png, то всё отрабатывает)
А автоматом - нет(

Может, в оси дело? Тестирую на Win7.

Похоже, затык на строке:
Delphi
1
memo1.Lines.Add(GetDosOutput(dir+'zbarimg.exe', 'grab.bmp'));
В процедуре:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Timer1Timer(Sender: TObject);
var b: tbitmap;
    dir: pansichar;
begin
 timer1.Enabled:= false;
 dir:= pansichar(extractfilepath(paramstr(0)));
 
 // граб кадра с устройства видеозахвата
 b:= TBitmap.Create;
 SampleGrabber.GetBitmap(b);
 b.SaveToFile('grab.bmp');
 b.Free;
 
 // запуск консоли и перехват через Pipes
 if fileexists('grab.bmp') then
//  memo1.Text:= GetDosOutput(dir+'zbarimg.exe', 'grab.bmp');
    memo1.Lines.Add('-------***--------');
    memo1.Lines.Add(GetDosOutput(dir+'zbarimg.exe', 'grab.bmp'));
    memo1.Lines.Add('-------***--------');
 timer1.Enabled:= true
end;
Она возвращает пустое значение.
0
10234 / 6612 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.03.2013, 12:51 11
1- вы ZBARIMG используете из приложенного к проекту или качали отдельно?
2- приложите ваш grab.bmp (в архиве, дабы форумный движок не влиял) в теме, одних слов недостаточно.
3- если у вас zbarimg срабатывает исключительно на png (его тоже в тему), то достаточно быстро преобразовать bitmap в памяти можно через gdi+ (пара строк кода) и в дальнейшем передавать в командной строке png.
1
0 / 0 / 0
Регистрация: 14.06.2011
Сообщений: 12
26.03.2013, 13:16 12
Тут проблема в том, что Pansichar(extractfilepath(paramstr(0))) возвращает только букву диска. Т.е. D или С (В зависимоти от того, откуда программа запускается). Это Я решу сам. Пока для теста запускаю с жестко указанным путем к каталогу:
Delphi
1
dir:= pansichar('c:\cam\');
Запуск
Delphi
1
GetDosOutput(dir+'zbarimg.exe', 'grab.png'))
возвращает "?????????????????". Значит, что-то с выходной строкой.
0
10234 / 6612 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.03.2013, 13:27 13
...вы кодировочку-то не забывайте учитывать ...да и резко переключаете свои задачи, где приложенный граб на рассмотрение общественности, где ответы на остальные вопросы?

...extractfilepath() только букву диска? ...это что-то новое, попробуйте передать ей не paramstr(0), а application.exename.
1
0 / 0 / 0
Регистрация: 14.06.2011
Сообщений: 12
26.03.2013, 13:29 14
Цитата Сообщение от raxp Посмотреть сообщение
... где ответы на остальные вопросы?
Скорее всего, ответом на все вопросы будет моя криворукость.
Сейчас попробую разобраться с кодировкой и убрать статику пути к каталогу, тогда и отпишусь кодом.
0
0 / 0 / 0
Регистрация: 14.06.2011
Сообщений: 12
26.03.2013, 13:49 15
ZBARIMG я использовл из проекта.
В архиве - картинка + код юнита.
Всё отрабатывает, кроме возвращаемой стоки. Что с кодировкой пока не разобрался.
Вложения
Тип файла: rar cam.rar (367.7 Кб, 240 просмотров)
0
10234 / 6612 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.03.2013, 14:31 16
oem, вы ведь с консолью работаете + дельфя юникодная небось.
1
0 / 0 / 0
Регистрация: 14.06.2011
Сообщений: 12
26.03.2013, 15:49 17
Цитата Сообщение от raxp Посмотреть сообщение
oem, вы ведь с консолью работаете + дельфя юникодная небось.
Embarcadero® Delphi® 2010.
Кодировку никак не победю. Совсем.
Добавил функцию:
Delphi
1
2
3
4
5
function StrOemToAnsi(const S: AnsiString): AnsiString;   //   Из Oem в Ansi
begin
  SetLength(Result, Length(S));
  OemToAnsiBuff(@S[1], @Result[1], Length(S));
end;
Добавляю строчку в Memo:
Delphi
1
    memo1.Lines.Add(StrOemToAnsi (GetDosOutput(dir+'zbarimg.exe', 'grab.bmp')));
Нихт. Опять кодировка не та. Куда копать?
0
10234 / 6612 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.03.2013, 16:32 18
...вам слова - ansi, юникод что-то говорят?
0
0 / 0 / 0
Регистрация: 14.06.2011
Сообщений: 12
26.03.2013, 16:43 19
Если вы пытаетесь определить мой IQ или уровень программирования - врядли это удастся. Я сюда пришел за помощью.
0
10234 / 6612 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.03.2013, 16:59 20
...мне от вас ничего не надо, в том числе определять ваш ай-кю, за юникод сказал второй раз (это при том, что в статье указана конкретная версия Delphi под которой все разрабатывалось), а теперь внимательно посмотрите на ваш код.
0
26.03.2013, 16:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2013, 16:59
Помогаю со студенческими работами здесь

Помогите найти шрифт штрих-код, который штрих-сканеры читают
Здравствуйте, сорри знаю не по теме так как не нашел решил писать здесь. Мне надо печатать по...

Штрих Код
Здравствуйте! Стало интересно, все мы знаем устройства считывания штрих кодов, которые нужно...

Штрих код и 1с
Как сделать чтоб 1с создавала и распознавала Штрих код? Я скачал компоненту OcvitaBarcode.ocx...

Штрих код
Добрый день! Озадачился такой проблемой. Во многих магазинах, аэропортах, стадионах и тд...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru