![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| PAG |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 10 Регистрация: 5.3.2009 Репутация: нет Всего: нет |
Есть промышленная видеокамера с пакетом поддержки (SDK).
Но все описание пакета и комплектные к нему примеры заканчиваются получением указателя на буфер с пикселями из видеокамеры. Где найти описание формата буфера изображения? Ясно, что он зависит от конфигурации параметров камеры. Но они известны. Как слить этот буфер в стандартный битмап или файл стандартного формата? Пробовал CreateBitmapIndirect с подстановкой структуры BITMAP всяческого содержания. Получаю только пустоту. Кому-нибудь приходилось решать подобную задачку? |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
известны, значит их здесь можно перечислить? иначе такой ответ тоже верный: http://www.google.com/search?q=%D1%84%D0%B...%BD%D0%B8%D1%8F но для DIB-ов, например, по-моему самый удобный способ - через SetDIBitsToDevice -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| PAG |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 10 Регистрация: 5.3.2009 Репутация: нет Всего: нет |
Известны - в том смысле, что я знаю что это, например монохром 8 бит. Но я не знаю как они упакованы в буфере.
Во всяком случае, я попытался описать буфер в структуре BITMAP и создать битмап через CreateBitmapIndirect, подставив ему указатель на биты изображения, из возвращаемого функцией API камеры. Почему-то битмап получается пустой. Возможно я не создал ему палитру (вроде битмап в каких-то случаях ее использует). Но как ее сосздать для скажем нецветного изображения пока не разобрался. Я рассмотрел, что файлы формата BMP хранят серые изображения с палитрой. А если скажем в графическом редакторе создать изображение типа Grayscale, то его сохранить в BMP уже не получится. Получается, что структура битмапа для Grayscale не пригодна? Вот тут я и запутался. Каким путем действовать? Это сообщение отредактировал(а) PAG - 16.5.2011, 11:07 |
|||
|
||||
| mekhanikus |
|
|||
|
Вольноопределяющийся ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 16.6.2008 Где: Спасск-Дальний Репутация: 1 Всего: 1 |
Если известны конфигурации камеры и размер буфера,
можно, для начала, попытаться тупо вручную побайтно скопировить буфер в какой-нибудь битмап. Например, грейскал 8 бит - 800х600, значит - 1 байт - 1 пиксел. Создаем битмап 800х600, копируем 800 байт в первую сторку, следующие 800 во вторую и т.д. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ну, если точно известно, что это именно DIB, то можно подобрать, каким методом упакованы данные, для этого есть поле biCompression и 2-3 варианта его значений + нужно обязательно знать разрешение камеры (ширину и высоту), чтобы подставить их в BITMAPINFOHEADER палитра цветов указывается после заголовка BITMAPINFOHEADER ее длина зависит от разрядности DIB'а и/или значения biClrUsed (для 8бит - это не более 256 цветов и не менее 1) в конечном счете, ее можно "забросать мусором", на содержимое кадра палитра не влияет, она влияет только на его окрас вобщем, я бы посоветовал еще раз перечитать документацию ( либо выложить ее здесь ), и четко определить, в каком начальном формате выдается "буфер с пикселями", остальное уже дело техники -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| PAG |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 10 Регистрация: 5.3.2009 Репутация: нет Всего: нет |
Да нет, точно не DIB. Первый байт буфера является первым пикселом изображения. В файл битмапа записывать планировал. Но обжегся, как писал, что формат BMP палитровый. А у меня картинка без палитры. Как с ней поступить пока не понял. Думаю BMP формат не проходит, поскольку каждый пиксел - 0..255 без палитры. Вроде этот формат такого не поддерживает. Может быть ошибаюсь. |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: 1 Всего: 1 |
PAG, bmp = самый простой формат, т.е. приближенный по максимум к массиву пикселов, то что ему хедер нужен = да, но тотже хедер нужен и в остальных форматах.
погуглите же - второй линк по кейворду "спецификация bmp" http://viledogsoftware.3dn.ru/publ/4-1-0-3 создали хедеры и т.п. - указали где пиксели, вот вам и картинка |
|||
|
||||
| PAG |
|
|||
|
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 10 Регистрация: 5.3.2009 Репутация: нет Всего: нет |
Спасибо, так и сделал.
Видимо какие-то поля в описаниях были не совсем корректны. Долго сравнивал с описаниями в правильных файлах. Сейчас все заработало. Тема закрыта |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |