Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Показать сообщение отдельно
Kaktus
0 / 0 / 0
Регистрация: 24.03.2009
Сообщений: 4
25.03.2009, 00:05
Читать и писать картинки можно либо в ручную, либо с использованием уже готовых механизмов. Многие любят, например, 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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.