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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 73, средняя оценка - 4.70
Nikke
Сообщений: n/a
24.10.2009, 16:29     Обработка изображений #1
Здравствуйте. В С не программировал никогда. Необходимо реализовать алгоритм обработки изображения на С++ с использованием только стандартных библиотек (курсовая).
1. С помощью каких функций инициализовать изображение, считать параметры пикселя-коды цветов, яркость, координаты?
2. Буду рад ссылкам на литературу на эту тематику (именно обработку изображений), примерам исходников, и вообще каким-либо полезным советам.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2009, 16:29     Обработка изображений
Посмотрите здесь:

Распознавание изображений C++
Обработка изображений: получить координаты центра самой большой красной банки на фотографии C++
Попиксельная обработка изображений Visual C++
C++ Просмотр изображений
Обработка изображений C++ Builder
Обработка изображений, чистая математик + Си++ | for newbie C++
Обработка изображений - стандартные эффекты фотошопа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,902
Завершенные тесты: 1
24.10.2009, 18:46     Обработка изображений #2
Проще всего работать с файлами 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 с заполнением нужных полей, и скидываешь их в файл в этом порядке, после чего пишешь сами данные.
Nikke
Сообщений: n/a
24.10.2009, 19:05     Обработка изображений #3
Полезная информация, вот только что значит MSDN
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,902
Завершенные тесты: 1
25.10.2009, 12:34     Обработка изображений #4
MSDN
СЕРГЕЙ2010
0 / 0 / 0
Регистрация: 14.08.2011
Сообщений: 17
15.08.2011, 09:16     Обработка изображений #5
прочел вашу проблему-не подскажите-вами описанный метод способен повысить качество изображения-картинки?
voral
363 / 343 / 46
Регистрация: 16.03.2008
Сообщений: 1,737
15.08.2011, 18:10     Обработка изображений #6
Так тут нет ни слово про обработку. Исключительно считали, отобразили, сохранили.....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2011, 12:47     Обработка изображений
Еще ссылки по теме:

Загрузка и обработка нескольких изображений C++ Builder
C++ Обработка изображений
C++ Фильтрация изображений
Обработка .bmp изображений C++ Builder

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
02.09.2011, 12:47     Обработка изображений #7
Цитата Сообщение от Nikke Посмотреть сообщение
Здравствуйте. В С не программировал никогда. Необходимо реализовать алгоритм обработки изображения на С++ с использованием только стандартных библиотек (курсовая).
1. С помощью каких функций инициализовать изображение, считать параметры пикселя-коды цветов, яркость, координаты?
2. Буду рад ссылкам на литературу на эту тематику (именно обработку изображений), примерам исходников, и вообще каким-либо полезным советам.
- здесь мой уже готовый проект по работе с BMP Не вывести картинку из BMP файла на экран
Yandex
Объявления
02.09.2011, 12:47     Обработка изображений
Ответ Создать тему
Опции темы

Текущее время: 11:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru