![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| n0xi0uzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 29.12.2004 Где: Санкт-Петербург Репутация: нет Всего: 1 |
В общем, требуется сделать следующее: получить из bmp-файла изображение штрихкода в кодировке Interleaved 2 of 5, допустим, вот такое:
![]() И представить его в бинарномвиде, т.е. широкие белые и черные полосы -- еденички, а узкие черные и белые полосы -- нолики. Нужны любые советы по этому поводу. Подксажите, хотя бы, в каком направлении копать и что читать, я раньше не занимался обработкой bmp-файлов. Заранее благодарен. |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Любыми способами читаеш файл в память. Береш где то всередине строчку. И пошел считать последовательности белых и черных полей ( сколько пикселов в данном поле) по строчке и заносиш результаты в массив. Затем просто нужно только определить какая толшина будет соответствовать нулю, какая единице.
-------------------- Пролетал мимо. |
|||
|
||||
| n0xi0uzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 29.12.2004 Где: Санкт-Петербург Репутация: нет Всего: 1 |
А почему в середине точку? Я думал, надо идти от начала и до конца...
|
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Я имел ввиду, береш линию из середины по Y координатам рисунка и строиш линию сканирования по координатам X от 0 и до конца ширины рисунка. Просто как правило, там более четкое изображение. Сканировать весь рисунок не обязательно. Просто представь как работает сканер штрих кодов. И действуй по тому же алгоритму.
-------------------- Пролетал мимо. |
|||
|
||||
| n0xi0uzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 29.12.2004 Где: Санкт-Петербург Репутация: нет Всего: 1 |
ОК, спасибо, вроде понял.
А как прочитать bmp в память и определить, черный ли это цвет, или белый можно спросить, или это уже в другой раздел надо идти? |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: нет Всего: 67 |
по крайней мере в BC++B это всё делается очень просто....
-------------------- СУВ, Partizan. |
|||
|
||||
| n0xi0uzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 29.12.2004 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Речь идет о Visual C++ и хотелось бы увидеть более конкретный ответ, нежели "очень просто" ;).
Заране благодарен |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Как делать в MFC я не советчик. В чистом WinAPI есть несколько способов.
Сушествует несколько систем градаций цветов. В компьютерной технике как правило используют систему RGB (красный-зеленный-голубой). Т.е. почти всю цветовую гамму можно представить только тремя основными цветами. Иногда добавляют еше одну константу "Интенсивность" (яркость). Теперь как определить цвет в рисунке. Все зависит от глубины представления цвета в файле. Есть 2, 4, 8, 16, 24, 32 разрядные представления. Поиши в интернете стандарт файла BMP. Это довольно хорошо описанный стандарт. В WinAPI тип цвета определен, как COLORREF. Есть макрос, который из определений основных цветов, переводитв представление COLORREF. Этот макрос
Представление RGB(0,0,0) Это черный цвет. RGB(255,255,255) это белый цвет. -------------------- Пролетал мимо. |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: нет Всего: 67 |
могу кинуть пример на BC++B, VC++ сам только начал осваивать, поэтому с WinAPI или MFC ничего существенного предложить не могу... -------------------- СУВ, Partizan. |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |