|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.11.2007, 15:47 | #1 |
Новичок
Джуниор
Регистрация: 13.11.2007
Сообщений: 2
|
Как работать с изображениями
Всем доброго времени суток!
На С++ программирую совсем недавно, нужен хелп по такой теме: нужно прогу написать, которая получает черно-белую картинку - пейзаж(формате jpeg, или как мне посоветовали, PGM) - и выделяет на ней линюю горизонта (границу с небом) и нижнее очертание дальних гор (самые темные), как показано на прикрепленном рисунке. Т.е. как я понимаю, каждый пиксель картинки заносится в двумерный массив по координатам и имеет значение от 0 до 255 (не помню сейчас точно). 0 - белый цвет, чем больше, тем чернее. Потом каким-то образом нужно определить, где начинаются пиксели с одинаковыми (или почти одинаковыми) цветовыми значениями - типа небо, и сделать черными рядомстоящие пиксели. Затем, по той же логике можно и нижнюю линию нарисовать. Потом все пиксели между линиями нужно сделать белыми, и , наконец, то, что получилось нужно экспортировать в новую картинку. Вопрос: правильна ли моя логика и как импортировать картинку в массив, где вообще можно прочитать про обработку изображений? Заранее спасибо |
13.11.2007, 21:03 | #2 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Имхо самое сложное тут нарисовать эти две линии. Остальное дело техники. В какой среде делаешь? С++ понятие растяжимое.
Цитата:
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
|
14.11.2007, 01:01 | #3 |
Новичок
Джуниор
Регистрация: 13.11.2007
Сообщений: 2
|
Программирую в Dev-C++ 5. Дело в том, что логика более-менее понятна. Есть опыт программирования в java. Я главным образом не пойму как сам импорт картинки происходит. Допустим, импортировать текстовый файл я могу без проблем - отдельными чарами или построчно. Я не понимаю, как "видится" сама картинка, что она собой представляет в виде кода. Перерыл кучу разных книг и самоучителей - ничего конкретного не нашел по этой теме. Может кто вразумит?
|
14.11.2007, 18:52 | #4 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Я могу такую программу написать на Дельфи, ну еще может на Билдере С++ после некоторой адаптации, в нем тоже VCL. Могу немного помочь теорией.
В Дельфи с импортированием графики нет никаких проблем. Существуют специалные классы в VCL. Например TBitmap. Чтобы в него загнать картинку достаточно одной строки кода с указанием файла. Как ты понимаешь мало кто роется в исходниках чтобы понять как именно он это делает. Но в общем BMP файл это набор байт никак не закодированный, ширину картинки умножь на высоту, и еще умножь на 3 (три байта на один пиксель, R G B это если он 24-х битный), и получишь размер файла. Нужно только знать в каком порядке их считывать. Теперь куда это все записать в программе. Картинка в виде кода представляет обычный двухмерный массив - матрицу. Элементы этой матрицы это целочисленные значения в диапазоне 0 - 16777216 (256*256*256). Если нужна будет работа с цветом можно для удобства заранее создать структуру с полями R,G,B каждое размером в байт. И сделать матрицу этих структур. WinAPI имеет много графических функций. GetRValue, GetGValue, GetBValue - вытянуть значение одной составляющей цвета BitBlt - копирует части рисунка И много других. Надеюсь хоть чем-то помог )
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
10.03.2011, 22:27 | #5 |
Новичок
Джуниор
Регистрация: 10.03.2011
Сообщений: 1
|
Уважаемые программисты, подскажите, пожалуйста, как импортировать изображение в С++ (работа с обычной консолью). Да, и был бы очень кстати пример "переноса" каждой пиксели в массив.
Заранее спасибо, вы мне очень поможете. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Заполнение двумерного массива прямоугольников случайными изображениями | Mischa | Помощь студентам | 1 | 11.03.2008 21:58 |
Работа с изображениями. | varvara16 | Мультимедиа в Delphi | 2 | 21.12.2007 15:52 |
Как работать c USB? | Araver | Общие вопросы Delphi | 4 | 05.11.2007 18:41 |
работа с изображениями. | borodaj | Мультимедиа в Delphi | 3 | 21.04.2007 19:21 |
Работа с изображениями и рисунками | dima00 | Мультимедиа в Delphi | 2 | 12.04.2007 15:11 |