![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| fen1ksss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
В общем есть картинка bmp формата, нужно разбить эту картинку на RGB и загнать в массив (скорее всего 3 мерный где каждый элемент это r,g,b соответсвенно) для дальнейшей работы с изображением через массив.
Дело в том что как работать с черно-белым понимаю, а как цветное на RGB разбить немного не понимаю, подскажите |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 97 |
fen1ksss, тут всё описано.
|
|||
|
||||
| fen1ksss |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
Тогда здесь RowProcessed[i].rgbtRed содержится 256 оттенков красного? тогда грубо говоря если я хочу вывести этот массив с красным цветом на форму, то пишу
и выводит, я правильно понимаю? |
||||
|
|||||
| UniBomb |
|
||||||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Нет, тут содержится красная составляющая i-того пикселя j-той строки. ScanLine читает изображения по-строчно, выдавая на гора массив значений в формате, определённым PixelFormat. RGB - это модель цветапредставления в виде трёх составляющих - красной, зелёной и синей. Допустим у тебя есть картинка 16*16 пикселей. Тогда:
Далее - Допустим верхний левый пиксель имеет чиленное значение цвета, равное 0xFF0000. Т.е. он красный. Тогда:
|
||||||
|
|||||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
UniBomb, в делфях нет оператора "<<" . Он называется shl
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| fen1ksss |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
А каждая красная составляющая как раз и может принимать одно из 256 значений взависимости от оттенка красного?
Если допустим использую
пишет ошибку, в чем проблема? Изображение 'a.bmp' 800x600 Это сообщение отредактировал(а) fen1ksss - 14.9.2010, 21:32 |
||||||
|
|||||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Alexeis, я значит не зря сомневался
Да. Каждая из трёх составляющих может принимать значения от 0 до 255. По коду ничего не скажу, т.к. боюсь соврать как в случае с оператором << |
|||
|
||||
| fen1ksss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
Вот эти значения (RowProcessed[i].rgbtRed << 16) + (RowProcessed[i].rgbtGreen << 8) + RowProcessed[i].rgbtBlue;
по какому принципу выбираются? если картинка другого размера? Это сообщение отредактировал(а) fen1ksss - 14.9.2010, 21:01 |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 97 |
fen1ksss, выбираются по одному и тому же принципу. Вот смотри - картинка имеет глубину цвета 24 бита. Три состовляющие. Значит на каждую составляющую приходится по 8 бит или по одному байту. 24 бита - это три байта. Значит числовое значение цвета - это есть ни что иное как трёхбайтное целое число, где старший байт является красной составляющей, средний байт зелёной, а младший - соответсвенно синей.
![]() |
|||
|
||||
| fen1ksss |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
UniBomb, понял, спасибо, теперь бы только с ошибкой разобраться
Добавлено через 12 минут и 47 секунд Может дело в моем image? если просто в paint или другой программе создаю изображение Windows bmp оно ведь 24-битное? |
|||
|
||||
| Illusion Dolphin |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 13 Всего: 63 |
Ошибка в строке 62 - I и J после цикла - RowProcessed выходит за пределы.
Вообще не понимаю зачем надо BMP переводить в массив если это и есть массив
Не всегда. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
| fen1ksss |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
что можно сделать? i,j описать как longint? Вот такая ошибка Process is not accessible Thread Exit: Thread ID: 3852. Process Project1.exe (3536) вот юнит с картинкой http://www.megaupload.com/?d=XX55QNQD
В итоге должна должна получиться программа : из видео сделать изображение-панораму. в массив загонять нужно чтобы дальше сравнивать 2 изображения, находить общие пиксели и накладывать друг на друга Это сообщение отредактировал(а) fen1ksss - 15.9.2010, 20:29 |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |