gpt4 book ai didi

c - 当我将像素乘以比例因子时图像变黑

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:19 25 4
gpt4 key购买 nike

void scale_brightness( uint8_t array[],
unsigned int cols,
unsigned int rows,
double scale_factor )
{
for (int x = 0; x < (cols*rows); x++)
{
array[x] = round(scale_factor * (double)(array[x]));
if (array[x] > 255 )
{
array[x] = 255;
}
}

}

此函数应该将像素乘以比例因子,并根据乘以该因子使图像变亮或变暗。如果相乘的图像大于 255,则像素阈值为 255。我尝试了代码并输入了 scale_brightness(数组、256、256、2)。这应该将每个像素乘以 2,因此它应该使图像变亮。但是当我运行它时,它变成了黑色,与它应该做的完全相反。我也试过做0,结果变黑了。任何其他颜色只会给我一种深灰色。有人能帮我找出为什么会这样吗?

最佳答案

您的逻辑不起作用,因为 array[x] 不能超过 255,所以 if 主体永远不会执行,并且 array[x] 只是被截断了。使用额外的 double 值进行计算:

    double d = round(scale_factor * (double)(array[x]));
if (d >= 255.0 )
{
array[x] = 255;
}
else
{
array[x] = (uint8_t)d;
}

请注意,可以通过排除浮点运算来有效优化此循环。乘以 double 因子可以替换为乘以 int 并右移。

关于c - 当我将像素乘以比例因子时图像变黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26954876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com