Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формат изображения видеокамеры, Слить буфер изображения в картинку 
V
    Опции темы
PAG
Дата 16.5.2011, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 10
Регистрация: 5.3.2009

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



Есть промышленная видеокамера с пакетом поддержки (SDK).
Но все описание пакета и комплектные к нему примеры заканчиваются получением указателя на буфер с пикселями из видеокамеры.
Где найти описание формата буфера изображения?
Ясно, что он зависит от конфигурации параметров камеры. Но они известны.
Как слить этот буфер в стандартный битмап или файл стандартного формата?

Пробовал CreateBitmapIndirect с подстановкой структуры BITMAP всяческого содержания.
Получаю только пустоту.
Кому-нибудь приходилось решать подобную задачку?
PM MAIL   Вверх
GremlinProg
Дата 16.5.2011, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(PAG @  16.5.2011,  09:45 Найти цитируемый пост)
Ясно, что он зависит от конфигурации параметров камеры. Но они известны.

известны, значит их здесь можно перечислить?

иначе такой ответ тоже верный: http://www.google.com/search?q=%D1%84%D0%B...%BD%D0%B8%D1%8F

но для DIB-ов, например, по-моему самый удобный способ - через SetDIBitsToDevice


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
PAG
Дата 16.5.2011, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 10
Регистрация: 5.3.2009

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



Известны - в том смысле, что я знаю что это, например монохром 8 бит. Но я не знаю как они упакованы в буфере.
Во всяком случае, я попытался описать буфер в структуре BITMAP и создать битмап через CreateBitmapIndirect, подставив ему указатель на биты изображения, из возвращаемого функцией API камеры.
Почему-то битмап получается пустой.
Возможно я не создал ему палитру (вроде битмап в каких-то случаях ее использует).
Но как ее сосздать для скажем нецветного изображения пока не разобрался.
Я рассмотрел, что файлы формата BMP хранят серые изображения с палитрой.
А если скажем в графическом редакторе создать изображение типа Grayscale, то его сохранить в BMP уже не получится.
Получается, что структура битмапа для Grayscale не пригодна?
Вот тут я и запутался.
Каким путем действовать?


Это сообщение отредактировал(а) PAG - 16.5.2011, 11:07
PM MAIL   Вверх
mekhanikus
Дата 16.5.2011, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вольноопределяющийся
*


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

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



Если известны конфигурации камеры и размер буфера,
можно, для начала, попытаться тупо вручную побайтно скопировить буфер в какой-нибудь битмап.
Например, грейскал 8 бит - 800х600, значит - 1 байт - 1 пиксел.
Создаем битмап 800х600, копируем 800 байт в первую сторку, следующие 800 во вторую и т.д.
PM MAIL   Вверх
GremlinProg
Дата 16.5.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(PAG @  16.5.2011,  13:00 Найти цитируемый пост)
Каким путем действовать?

ну, если точно известно, что это именно DIB,
то можно подобрать, каким методом упакованы данные, для этого есть поле biCompression и 2-3 варианта его значений
+ нужно обязательно знать разрешение камеры (ширину и высоту), чтобы подставить их в BITMAPINFOHEADER

палитра цветов указывается после заголовка BITMAPINFOHEADER
ее длина зависит от разрядности DIB'а и/или значения biClrUsed (для 8бит - это не более 256 цветов и не менее 1)
в конечном счете, ее можно "забросать мусором",
на содержимое кадра палитра не влияет, она влияет только на его окрас

вобщем, я бы посоветовал еще раз перечитать документацию ( либо выложить ее здесь ),
и четко определить, в каком начальном формате выдается "буфер с пикселями",
остальное уже дело техники


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
PAG
Дата 16.5.2011, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 10
Регистрация: 5.3.2009

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



Цитата(GremlinProg @ 16.5.2011,  13:55)
Цитата(PAG @  16.5.2011,  13:00 Найти цитируемый пост)
Каким путем действовать?

ну, если точно известно, что это именно DIB,
то можно подобрать, каким методом упакованы данные, для этого есть поле biCompression и 2-3 варианта его значений
+ нужно обязательно знать разрешение камеры (ширину и высоту), чтобы подставить их в BITMAPINFOHEADER

Да нет, точно не DIB.
Первый байт буфера является первым пикселом изображения.
В файл битмапа записывать планировал.
Но обжегся, как писал, что формат BMP палитровый.
А у меня картинка без палитры.
Как с ней поступить пока не понял.
Думаю BMP формат не проходит, поскольку каждый пиксел - 0..255 без палитры.
Вроде этот формат такого не поддерживает.
Может быть ошибаюсь.


PM MAIL   Вверх
ASMatic
Дата 16.5.2011, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



PAG, bmp = самый простой формат, т.е. приближенный по максимум к массиву пикселов, то что ему хедер нужен = да, но тотже хедер нужен и в остальных форматах.
погуглите же - второй линк по кейворду "спецификация bmp"
http://viledogsoftware.3dn.ru/publ/4-1-0-3
создали хедеры и т.п. - указали где пиксели, вот вам и картинка
PM MAIL   Вверх
PAG
Дата 17.5.2011, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 10
Регистрация: 5.3.2009

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



Спасибо, так и сделал.
Видимо какие-то поля в описаниях были не совсем корректны.
Долго сравнивал с описаниями в правильных файлах.
Сейчас все заработало.

Тема закрыта
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

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


 




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


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

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