所以今天,我有一个家庭作业,需要以工程: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