Задача: Программа обработки растр. изображений

Тема в разделе "C/C++/C#", создана пользователем pikachuha, 13 дек 2010.

Статус темы:
Закрыта.
  1. pikachuha

    pikachuha Гость

    Всем привет! Мне задали курсач по программированию на Visual Studio C++. Разработать программу для обработки растровых изображений, хранящихся в файлах формата BMP (BitMaP).

    мой вариант:
    1. Преобразовать цветное изображение в черно-белое (оттенки серого). Для каждого пикселя изображения выполнить следующие действия:
    • вычислить среднее арифметическое S компонентов пикселя;
    • заменить значения компонентов пикселя на S.


    Помогите плиз!! Подскажите с чего начать!!!!!!
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Начни с функции main и загрузки изображения. Если что не получится - подскажу.
     
  3. pikachuha

    pikachuha Гость

    ну вот, на что меня хватило:

    Код (C++):
    #include <iostream>
    #include <fstream>
    using namespace std;
    void dsh (char *data, long *dlina, long *vis) //функция вычисляющая длину и высоту избражения
    {
    *dlina=static_cast<long>(data[18]);
    *vis=static_cast<long>(data[22]);
    return;
    }
    int main()
    {
    fstream file, ofile;
    char data[54];long dlina; long vis;
    file.open ("temp.bmp", ios_base::in);       //исходная картинка
    ofile.open ("temp2.txt", ios_base::out);     //файл с новой картинкой
    file.read (data,54);                 //считывание заголовка BMP-файла
    ofile.write (data,54);              //запись этого заголовка в новый файл
    dsh (data, &dlina, &vis);
    cout<<dlina<<vis;  //вывод для проверки
    ...

    Я проверил, размеры пишет правильные. А теперь у меня вопрос, как мне поджобраться к массиву пикселей??дальше алгоритм я примерно знаю, он будет примерно такой:

    Код (C++):
    int r=0, g=0, b=0, S=0;
    for (i=0; i<Height; i++)
    {
    ... // тут как-то надо объявить массив ptr, в который будет записываться очередная строка матрицы пикселей.
    for (j=0; i<Width*3;j+=3)

    {
    r = ptr[x];  //Получаем
    g = ptr[x+1]; //значения
    b = ptr[x+2]; //каналов
    S = (r + g + B) / 3; //Выссчитываем среднее значение
    ptr[x]  = S;
    ptr[x+1] = S;
    ptr[x+2] = S;
    }
    а потом новую матрицу пикселей дописываем в новый файл.
    тока вопрос как мне подобраться к матрице пикселей??
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    2pikachuha :
    1) Так приложение будет полностью консольное????
    2) Размеры изображения изменяться не будут?
    3) Будет ли уменьшение канвы?
     
  5. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    2 pikachuha: Автор, ту так тема является актуальной??? Или вы уже на нее забили ? ;-)))
     
Загрузка...
Похожие Темы - Задача Программа обработки
  1. Янчик
    Ответов:
    0
    Просмотров:
    490
  2. TrishaRay
    Ответов:
    1
    Просмотров:
    783
  3. elzim
    Ответов:
    0
    Просмотров:
    932
  4. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.128
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.107
Статус темы:
Закрыта.

Поделиться этой страницей