Если в приведенном ниже фрагменте кода (внизу этого поста) мне нужно написать функцию, которая превратит BMP в градации серого, как мне поступить? Обратите внимание, что main
программы уже написана, и в ней записаны все функции открытия / закрытия файлов и т. Д. - для этого просто нужна сама функция.
Мое назначение требует, чтобы для каждого пикселя значения красного, зеленого и синего были преобразованы в среднее значение из трех, чтобы они стали в некоторой степени оттенками серого, но я не знаю, как их начать.
Включены следующие библиотеки - опять же, обратите внимание, что это в отдельном файле:
#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
Вот фрагмент кода, который я должен заполнить:
void grayscale(int height, int width, RGBTRIPLE image[height][width])
{
return;
}
Я поиграл с потенциальным решением ниже, но мое использование image[height][width]
, похоже, не работает. И тогда, конечно, мне нужно заменить 0x00
вычислением, которое обеспечивает среднее из трех. Но я не совсем уверен, как это улучшить.
{
if(( image[height][width].rgbtRed==0xff && image[height][width].rgbtBlue==0x00 && image[height][width].rgbtGreen==0x00)||(image[height][width].rgbtRed==0xff && image[height][width].rgbtBlue==0xff && image[height][width].rgbtGreen==0xff))
{
image[height][width].rgbtRed=0x00;
image[height][width].rgbtBlue=0x00;
image[height][width].rgbtGreen=0x00;
}
return;
}
(Я прошу прощения, если мой жаргоне ошибочен - я очень начинающий ученик.)