图像中红色像素的平均值



所以今天,我有一个家庭作业,需要以工程:CS101 - 自定进度的计算机科学101的图像为例计算一张图像中红色像素的平均值。我试图编写代码来做到这一点,但从结果来看,也许我做错了什么。如果有人能为我检查并帮助我纠正它,我将不胜感激。

image = new SimpleImage("flowers.jpg");
for (pixel: image) {
    red = 0;
    green = 0;
    blue = 0;
    count = 0;
    red =  red + pixel.getRed();
    blue = blue + pixel.getBlue();
    green = green + pixel.getGreen();
    count = count + 1;
    avgred = red / count;
    avggreen= green / count;
    avgblue = blue / count;
}
print(image);
print("Average Red:", avgred);

您的计算不正确。

要计算平均值,您必须将所有值相加,然后将该总和除以值的数量。

您将 0 分配给红色并在每次循环迭代中计数,因此您的"平均值"等于最后一个像素红色值除以 1。因此,您只需获得最后一个像素值,而不是平均值。

确保你初始化你的总和和计数器,以便进入循环。你只计算循环内的总和!

伪代码:

sum = 0
count = 0
for each pixel:
  sum = sum + pixelvalue
  count = count + 1
end
average = sum / count

最新更新