Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать, чтобы у картинки был формат RGB565? 
:(
    Опции темы
=Женек=
Дата 1.5.2015, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Господа, кидаю на форму Image.

Далее из массива заполняю канву
Код

Image1->Picture->Bitmap->PixelFormat=pf16bit; // подготавливаем Image1 к тому, что будет грузиться 8 битная информация.

memset(&bitmap_info, 0, sizeof(bitmap_info));
bitmap_info.bmiHeader.biSize = sizeof(bitmap_info.bmiHeader);
bitmap_info.bmiHeader.biWidth = 640;
bitmap_info.bmiHeader.biHeight = 480;
bitmap_info.bmiHeader.biPlanes = 1;
bitmap_info.bmiHeader.biBitCount = 16;//bits per pixel
bitmap_info.bmiHeader.biCompression = DIB_RGB_COLORS;

SetDIBits(Image1->Canvas->Handle,Form1->Image1->Picture->Bitmap->Handle,0,Image1->Height,&DataIn,&bitmap_info,DIB_RGB_COLORS); 


Источник данных в массиве - сигнал с камеры. Получаю неадекватную по цветам картинку. Долгие эксперименты показали, что если настроить камеру на выдачу сигнала RGB555, а не 565, то цвета правильные. То есть буфер декодируется как RGB555.

Как перенастроить?
PM MAIL   Вверх
SVN74
Дата 2.5.2015, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если Вам просто надо смотреть на себя в камеру используйте просто "capPreview" с указанием места (панели) в GDI, кстати там же можно и получить всю картинку как RGB.
А если Вам нужно выполнить более сложную задачу (захват кадра -> упаковка -> передача -> распаковка -> отображение), то  нужно задействовать функцию "ICCompress" для которой у всех камер идет стандартный захват (YUV поток)  для дальнейшей упаковки, Вы конечно можете перевернуть его в RGB формат, но тут начнутся проблемы совместимости вашей программы с другими камерами, - далеко не все камеры поддерживают захват в RGB. Далее упакованный поток вы сможете с легкостью распаковать в RGB с помощью функции "ICDecompress"...   
PM MAIL WWW   Вверх
=Женек=
Дата 3.5.2015, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ниче не понял..
За альтернативный путь спасибо, но вы можете мне объяснить именно то, о чем я спросил?
PM MAIL   Вверх
Pavia
Дата 3.5.2015, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



=Женек=, 
Цитата(=Женек= @  1.5.2015,  07:27 Найти цитируемый пост)
Как перенастроить?

Считайте, что это физическое ограничения, данной интегральной схемы камеры. И поменять вы их не сможете кроме как перепаять транзисторы в чипе. Берите поток по умолчанию. А после декодируйте в нужный вам формат. 

Во-вторых так вопрос не задают.  Что за камера? Какой библиотекой для захвата пользуетесь?
И самое главное для чего вам нужно перекодировать в такой экзотичный формат? Вообще не понятно что вы хотите получить!
PM MAIL   Вверх
=Женек=
Дата 3.5.2015, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да вы не поняли. Камера и чип тут ни при чем. Они генерируют формат, какой скажешь.
Я еще до того как камера приехала экспериментировал - заполнял массив ВРУЧНУЮ в соответствии с форматом RGB565. Просто нарисовал 3 региона - красный, синий, зеленый и отправил буфер по USB. На входе (в софте) проверил - действительно поступившие данные в формате RGB565.
 Вот только цвета были какие-то темные. Я не придал этому значения. И лишь когда полноцветная картинка пошла с искажениями цвета, стал копать.
И накопал, что если камеру настроить на RGB555, или цветовые столбцы забить в массив вручную в формате 555, то картинка отображается как надо. 
Если же массив данных формата RGB565 (а его целостность на входе, то есть в софте компа подтверждена) залить указанным в первом посте кодом на канву, то получаем картинку искаженного цвета.
Иными словами, если я настраиваю камеру в режим 555 и получаю на канве картинку с правильными цветами, то вывод очевиден - канва работает в режиме 555, несмотря на то что я указал 16-ти а не 15-ти битный режим.

Цитата

Что за камера? Какой библиотекой для захвата пользуетесь?

Камера OV7670
Захват аппаратный - DCMI интерфейс контроллера STM32F407
Передача - USB CDC
Прием - свой собственный софт, который принимает буфер и заливает им канву.

Еще раз говорю - именно на заливке канвы проблемы.
Принимаю буфер в котором  пара байт означающих цвет, выглядит 
11111 000000 00000
или 
00000 111111 00000
или 
000000 000000 11111
то есть чистокровные цвета.
Затем заливаю канву и анализирую какого цвета в нем пиксели - получаю что и в красном и в синем и в зеленом основного цвета не на 100 процентов, а есть примеси других составляющих.

Добавлено @ 11:48
Цитата

 Вообще не понятно что вы хотите получить! 

Объясню на пальцах.
Допустим, у меня буфер, состоящий из пикселей только зеленого цвета.
То есть 00000 111111 00000
Иным словами первый байт 0х07, второй 0xE0 - и так весь буфер.

Хочу указанным в первом посте кодом залить этот буфер на канву и получить картинку, сохранив и открыв которую  скажем в фотошопе мы получим спектр 0,255,0, а не 0,198,56  как у меня.


Это сообщение отредактировал(а) =Женек= - 3.5.2015, 11:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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