Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка штрихкода, bmp 
:(
    Опции темы
n0xi0uzz
Дата 9.3.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 29.12.2004
Где: Санкт-Петербург

Репутация: нет
Всего: 1



В общем, требуется сделать следующее: получить из bmp-файла изображение штрихкода в кодировке Interleaved 2 of 5, допустим, вот такое:
user posted image
И представить его в бинарномвиде, т.е. широкие белые и черные полосы -- еденички, а узкие черные и белые полосы -- нолики.
Нужны любые советы по этому поводу. Подксажите, хотя бы, в каком направлении копать и что читать, я раньше не занимался обработкой bmp-файлов.

Заранее благодарен.
PM MAIL WWW ICQ   Вверх
Fin
Дата 9.3.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



Любыми способами читаеш файл в память. Береш где то всередине строчку. И пошел считать последовательности белых и черных полей ( сколько пикселов в данном поле) по строчке и заносиш результаты в массив. Затем просто нужно только определить какая толшина будет соответствовать нулю, какая единице.


--------------------
Пролетал мимо.
PM MAIL   Вверх
n0xi0uzz
Дата 9.3.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 29.12.2004
Где: Санкт-Петербург

Репутация: нет
Всего: 1



А почему в середине точку? Я думал, надо идти от начала и до конца...
PM MAIL WWW ICQ   Вверх
Fin
Дата 9.3.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



Я имел ввиду, береш линию из середины по Y координатам рисунка и строиш линию сканирования по координатам X от 0 и до конца ширины рисунка. Просто как правило, там более четкое изображение. Сканировать весь рисунок не обязательно. Просто представь как работает сканер штрих кодов. И действуй по тому же алгоритму.


--------------------
Пролетал мимо.
PM MAIL   Вверх
n0xi0uzz
Дата 9.3.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 29.12.2004
Где: Санкт-Петербург

Репутация: нет
Всего: 1



ОК, спасибо, вроде понял.
А как прочитать bmp в память и определить, черный ли это цвет, или белый можно спросить, или это уже в другой раздел надо идти?
PM MAIL WWW ICQ   Вверх
Partizan
Дата 9.3.2006, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67



по крайней мере в BC++B это всё делается очень просто....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
n0xi0uzz
Дата 9.3.2006, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 29.12.2004
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Речь идет о Visual C++ и хотелось бы увидеть более конкретный ответ, нежели "очень просто" ;).

Заране благодарен
PM MAIL WWW ICQ   Вверх
Fin
Дата 9.3.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



Как делать в MFC я не советчик. В чистом WinAPI есть несколько способов.
Сушествует несколько систем градаций цветов. В компьютерной технике как правило используют систему RGB (красный-зеленный-голубой). Т.е. почти всю цветовую гамму можно представить только тремя основными цветами. Иногда добавляют еше одну константу "Интенсивность" (яркость).
Теперь как определить цвет в рисунке. Все зависит от глубины представления цвета в файле. Есть 2, 4, 8, 16, 24, 32 разрядные представления.
Поиши в интернете стандарт файла BMP. Это довольно хорошо описанный стандарт.
В WinAPI тип цвета определен, как COLORREF. Есть макрос, который из определений основных цветов, переводитв представление COLORREF. Этот макрос
Код

COLORREF RGB(

    BYTE bRed,    // red component of color
    BYTE bGreen,    // green component of color
    BYTE bBlue    // blue component of color
   );

Представление RGB(0,0,0) Это черный цвет. RGB(255,255,255) это белый цвет.



--------------------
Пролетал мимо.
PM MAIL   Вверх
Partizan
Дата 10.3.2006, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67



Цитата(n0xi0uzz @ 9.3.2006, 19:48)
Речь идет о Visual C++ и хотелось бы увидеть более конкретный ответ, нежели "очень просто" ;).

Заране благодарен

могу кинуть пример на BC++B, VC++ сам только начал осваивать, поэтому с WinAPI или MFC ничего существенного предложить не могу...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1302 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.