我正在编写一个灰度函数,我使用round()
来对RGB colored颜色 的平均值进行舍入,但在测试它时,该函数不会对答案进行舍入>;x.5,而是将所有内容向下舍入.
我试着把我的整型平均数改成浮点型平均数,然后用round()
,不起作用.我试着用roundf()
,但没用.例如,当红色、绿色和蓝色的值是27、28、28时,我得到的是平均值27而不是正确的28.
我的代码是:
void grayscale(int height, int width, RGBTRIPLE image[height][width])
{
int avg = 0;
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
avg = round((image[i][j].rgbtRed + image[i][j].rgbtGreen + image[i][j].rgbtBlue) / 3);
image[i][j].rgbtRed = avg;
image[i][j].rgbtGreen = avg;
image[i][j].rgbtBlue = avg;
}
}
return;
}