Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Паттерн MVC https://www.cyberforum.ru/ cpp/ thread2638.html
Большинсту программистов хорошо ивестен данный паттерн, так что вдаваться в подробности не буду, НО что делать когда моделей несколько, элементы модели связанны соотношением один к одному и разные...
Кто работал с OGRE C++
Кто подключал физику AREA physx к OGRE. Нет ли исходника или примеров.
bin-файлы: открытие, чтение, обработка C++
Здравствуйте, подскажите, пожалуйста, команды, с помощью которых файлы с расширением bin можно не только открыть, но и увидеть, что в них находится, чтобы затем обработать их. Во всех книжках я нашла...
C++ Алгоритмы сортировок Наиболее часто задаваемые вопросы по С++. Реализация распространенных алгоритмов, решения типовых задач. Статьи и учебники C++ Оглавление: Выбором Пузырьком Вставками Шелла https://www.cyberforum.ru/ cpp/ thread1436.html
C++ Игра "Жизнь" https://www.cyberforum.ru/ cpp/ thread918.html
Программа: игра "Жизнь". Среда реализации: VC++ 7.0. Интерфейс: real-time изменение колонии. Проблема: окно не успевает прорисовать уже поставленных паразитов на сообщение WM_PAINT. Исходник:...
 
0 / 0 / 0
Регистрация: 24.03.2009
Сообщений: 4
25.03.2009, 00:05 0

Нужна помощь в обработке изображений!

25.03.2009, 00:05. Просмотров 6921. Ответов 10
Метки (Все метки)

Ответ

Читать и писать картинки можно либо в ручную, либо с использованием уже готовых механизмов. Многие любят, например, OpenCV. В ATL есть класс CImage, который умеет работать с картинками. Вот пример программы, которая читает картинку из файла и пишет в другой красный канал из первой картинки:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <atlstr.h>
#include <atlimage.h>
 
void main ()
{
    CImage in, out;
    in.Load ( "in.jpg" ); //открываем картинку из файла
    int w = in.GetWidth(); //ширина
    int h = in.GetHeight(); //высота
    out.Create ( w, h, in. GetBPP() ); //делаем новую картинку
    for ( int y = 0; y < h; y++ )
        for ( int x = 0; x < w; x++ )
        {
            COLORREF pixel_color = in.GetPixel( x, y ); //цвет пикселя с координатами x, y
            char r = GetRValue ( pixel_color ); //извлечение красного канала
            //GetRValue(...) - это макрос, потому на производительности не сказывается
            //Аналогично можно тащить зеленый и синий каналы
            out.SetPixel( x, y, RGB( r, 0, 0 ) ); //RGB() - макрос, делающий COLORREF
        }
    out.Save ( "out.jpg" );
}
Не совсем понятно, что Вы хотите делать с картинкой. Если бинаризовать, то устанавливаете (или адаптивно подбираете) порог и вперед, если выделить границу горизонта или гор, то поможет обычная производная (более эффективна фильтрация с использованием стандартных масок типа Собеля, Лапласса, Превитт и т.п.)

Вернуться к обсуждению:
Нужна помощь в обработке изображений!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2009, 00:05
Готовые ответы и решения:

народ срочно нужна ваша помощь,не могу разобраться с прогой
Сжать n мерный целочисленный массив,удалив из него все элементы,величина которых находится в...

Нужна помощь
Такая проблемка. Есть окно редактирования изображения со скрулами.Со всех сторон окружено...

нужна помощь с прогой
Скажите пожалуйста как сделать чтобы например: я нажал на Button1 текст появился в Memo1, потом...

Мне нужна помощь
Памагітє пажаласта мнє нада написать праграму метада Ейлера ...? Переводы: NiTan (прямой):...

10
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.