Я делал фильтр в градациях серого для изображения, которое передается в виде структуры и является изображением [высота] [ширина]. Все значения работают, но по какой-то причине функция не округляется должным образом. Например, если значения RGB составляют 27 28 28, среднее значение должно быть 28, но вместо этого оно равно 27, поэтому оно копируется как 27 27 27. Почему?
// Convert image to grayscale
void grayscale(int height, int width, RGBTRIPLE image[height][width])
{
for (int i = 0; i < height; i++)
{
for (int w = 0; w < width; w++)
{
float avg = ((image[i][w].rgbtRed + image[i][w].rgbtGreen + image[i][w].rgbtBlue) / 3);
image[i][w].rgbtRed = round(avg);
image[i][w].rgbtGreen = round(avg);
image[i][w].rgbtBlue = round(avg);
}
}
return;
}