| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > BMP image в массив |
| Автор: fen1ksss 14.9.2010, 18:11 |
| В общем есть картинка bmp формата, нужно разбить эту картинку на RGB и загнать в массив (скорее всего 3 мерный где каждый элемент это r,g,b соответсвенно) для дальнейшей работы с изображением через массив. Дело в том что как работать с черно-белым понимаю, а как цветное на RGB разбить немного не понимаю, подскажите |
| Автор: UniBomb 14.9.2010, 18:17 |
| fen1ksss, http://www.delphisources.ru/pages/faq/base/bitmap_scanline_for_pixelformat.html всё описано. |
| Автор: fen1ksss 14.9.2010, 19:06 | ||||
Тогда здесь RowProcessed[i].rgbtRed содержится 256 оттенков красного? тогда грубо говоря если я хочу вывести этот массив с красным цветом на форму, то пишу
и выводит, я правильно понимаю? |
| Автор: Alexeis 14.9.2010, 20:36 |
| UniBomb, в делфях нет оператора "<<" . Он называется shl |
| Автор: fen1ksss 14.9.2010, 20:47 | ||||||
А каждая красная составляющая как раз и может принимать одно из 256 значений взависимости от оттенка красного?
Если допустим использую
пишет ошибку, в чем проблема? Изображение 'a.bmp' 800x600 |
| Автор: UniBomb 14.9.2010, 20:55 | ||
Alexeis, я значит не зря сомневался
Да. Каждая из трёх составляющих может принимать значения от 0 до 255. По коду ничего не скажу, т.к. боюсь соврать как в случае с оператором << |
| Автор: fen1ksss 14.9.2010, 20:58 |
| Вот эти значения (RowProcessed[i].rgbtRed << 16) + (RowProcessed[i].rgbtGreen << 8) + RowProcessed[i].rgbtBlue; по какому принципу выбираются? если картинка другого размера? |
| Автор: UniBomb 14.9.2010, 21:19 |
| fen1ksss, выбираются по одному и тому же принципу. Вот смотри - картинка имеет глубину цвета 24 бита. Три состовляющие. Значит на каждую составляющую приходится по 8 бит или по одному байту. 24 бита - это три байта. Значит числовое значение цвета - это есть ни что иное как трёхбайтное целое число, где старший байт является красной составляющей, средний байт зелёной, а младший - соответсвенно синей. http://ipicture.ru/ |
| Автор: fen1ksss 14.9.2010, 21:30 |
| UniBomb, понял, спасибо, теперь бы только с ошибкой разобраться Добавлено через 12 минут и 47 секунд Может дело в моем image? если просто в paint или другой программе создаю изображение Windows bmp оно ведь 24-битное? |
| Автор: Illusion Dolphin 15.9.2010, 17:35 | ||||
| Ошибка в строке 62 - I и J после цикла - RowProcessed выходит за пределы. Вообще не понимаю зачем надо BMP переводить в массив если это и есть массив
Не всегда. |
| Автор: fen1ksss 15.9.2010, 20:19 | ||||
что можно сделать? i,j описать как longint? Вот такая ошибка Process is not accessible Thread Exit: Thread ID: 3852. Process Project1.exe (3536) вот юнит с картинкой http://www.megaupload.com/?d=XX55QNQD
В итоге должна должна получиться программа : из видео сделать изображение-панораму. в массив загонять нужно чтобы дальше сравнивать 2 изображения, находить общие пиксели и накладывать друг на друга |