Форум программистов, компьютерный форум CyberForum.ru

Обработка изображений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Распараллеливание процесса путем использования алгоритма четно-нечетных перестановок. http://www.cyberforum.ru/cpp/thread58441.html
Здравствуйте. Необходимо в среде Turbo C на вычислительном кластере под Linux с использованием MPI распараллелить глупую сортировку массива с использованием алгоритма чётно-нечётных перестановок. Программа должна выводить время, затраченное на выполнение задачи в качестве результата. Так же прога должна корректно выполнятся на 1м, 5 и 10 компьютерах. Собственно доступ к кластеру имеется раз в...
C++ Ввод без отображения Как сделать ввод через " cin >> ", но чтобы вводимые значения(строка(char s)) не отображались??? Добавлено через 28 секунд Если " cin >> " не подходит то можно что-то другое! http://www.cyberforum.ru/cpp/thread58438.html
C++ Лабораторная C++
Ребята нужна помощь 17 вариант программа...
Проблема со скачиванием http-страницы C++
Возможно, что вопрос не к программистам, а к тем, кто разбирается в протоколе http, но для начала попробую здесь Когда-то я нашёл статью о том, как программно скачивать страницы - http://www.rsdn.ru/article/inet/wininet.xml Это дело вполне приемлимо работает. Но сейчас столкнулся с тем, что с некоторых страниц вместо текстовой инфы скачивается какой-то бинарный контент. В аттаче находится...
C++ Записная книжка http://www.cyberforum.ru/cpp/thread57795.html
Помогите пожалуйста доделать записную книжку. Там суть такая что при запуске читаются все файлы в мультимап и в мап. Дальше потом обрабатываются комбобоксы чтобы выбирать кафедру->Group->студент и потом при выбирании студента показывается его данные в формах. Можно еще поставить опции удаления,редактирования,добавления студента. А при закрытии файла все должно считыватся с массивов и...
C++ Найти разность квадратов матриц Даны 2 матрицы А и В найти разность их квадратов подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1605 / 997 / 118
Регистрация: 27.09.2009
Сообщений: 1,923
Завершенные тесты: 1
24.10.2009, 18:46     Обработка изображений
Проще всего работать с файлами BMP, поскольку данные там хранятся в несжатом формате. При работе с другими форматами они просто разжимаются в такой же. Вкратце обрисую основы по самому простому варианту.
В полноцветном формате на каждый пиксель отводится 3 или 4 байта (по одному байту на каналы Red, Green, Blue, 4-й байт на альфа-канал, но его можно пока игнорировать). Эти группы расположены в последовательно: пиксель за пикселем, строка за строкой. Соответственно, при загрузке надо:
- прочитать заголовок BMP (это несложное действие подробно документировано в MSDN) и узнать параметры изображения (ширина, высота, количество информации, отводимой на пиксель); рекомендую работать только с 32-битными изображениями
- выделить требуемое количество памяти, загрузить туда из файла сырые данные; формат BMP вообще-то предписывает хранить строки в обратном порядке, но зачастую в заголовке просто указывают высоту со знаком минус и кладут строки в прямом порядке: в этих нюансах неплохо подразобраться
Для чтения-записи пикселей надо преобразовывать позицию пикселя в линейное смещение в созданном массиве. Это несложно: при оси X слева направо и оси Y сверху вниз (точка [0, 0] расположена в верхнем левом углу изображения и координаты точек всегда неотрицательны) линейным номером пикселя будет x + y*width. Информация о пикселе может быть представлена либо как
C++
1
struct Pixel3 {unsigned char R, G, B;};
, либо как
C++
1
struct Pixel4 {unsigned char R, G, B, A;};
Компоненты красного, зелёного и синего каналов обрабатываются обычно независимо друг от друга. В соответствии с указанным типом данных, их значения могут лежать в пределе от 0 (минимальная яркость) до 255. Таким образом, обработка изображения сводится к работе с одномерным массивом и несложной целочисленной арифметике.
Сохранение полученного изображения тоже достаточно простая задача. В соответствии с тем же MSDN формируешь структуру заголовка файла BMP и заголовка изображения BMP с заполнением нужных полей, и скидываешь их в файл в этом порядке, после чего пишешь сами данные.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru