![]() |
|
|
![]()
|
|
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: 1 Всего: 1 |
Господа, кидаю на форму Image.
Далее из массива заполняю канву
Источник данных в массиве - сигнал с камеры. Получаю неадекватную по цветам картинку. Долгие эксперименты показали, что если настроить камеру на выдачу сигнала RGB555, а не 565, то цвета правильные. То есть буфер декодируется как RGB555. Как перенастроить? |
|||
|
||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
Если Вам просто надо смотреть на себя в камеру используйте просто "capPreview" с указанием места (панели) в GDI, кстати там же можно и получить всю картинку как RGB.
А если Вам нужно выполнить более сложную задачу (захват кадра -> упаковка -> передача -> распаковка -> отображение), то нужно задействовать функцию "ICCompress" для которой у всех камер идет стандартный захват (YUV поток) для дальнейшей упаковки, Вы конечно можете перевернуть его в RGB формат, но тут начнутся проблемы совместимости вашей программы с другими камерами, - далеко не все камеры поддерживают захват в RGB. Далее упакованный поток вы сможете с легкостью распаковать в RGB с помощью функции "ICDecompress"... |
|||
|
||||
| =Женек= |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 548 Регистрация: 20.2.2005 Репутация: 1 Всего: 1 |
ниче не понял..
За альтернативный путь спасибо, но вы можете мне объяснить именно то, о чем я спросил? |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: нет Всего: 12 |
=Женек=,
Считайте, что это физическое ограничения, данной интегральной схемы камеры. И поменять вы их не сможете кроме как перепаять транзисторы в чипе. Берите поток по умолчанию. А после декодируйте в нужный вам формат. Во-вторых так вопрос не задают. Что за камера? Какой библиотекой для захвата пользуетесь? И самое главное для чего вам нужно перекодировать в такой экзотичный формат? Вообще не понятно что вы хотите получить! |
|||
|
||||
| =Женек= |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
||||
|
|||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |