• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

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

  • Автор темы Автор темы pikachuha
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
P

pikachuha

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

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


Помогите плиз!! Подскажите с чего начать!!!!!!
 
Начни с функции main и загрузки изображения. Если что не получится - подскажу.
 
Начни с функции main и загрузки изображения. Если что не получится - подскажу.

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

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;
}

а потом новую матрицу пикселей дописываем в новый файл.
тока вопрос как мне подобраться к матрице пикселей??
 
2pikachuha :
1) Так приложение будет полностью консольное????
2) Размеры изображения изменяться не будут?
3) Будет ли уменьшение канвы?
 
2 pikachuha: Автор, ту так тема является актуальной??? Или вы уже на нее забили ? ;-)))
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!