我正在尝试获取图像的平均颜色。我尝试了各种方法,现在我使用下面的代码,但是我无法得到正确的结果。
有人能解释我的代码有什么问题吗?
//load bitmap to curimg
img1.Picture.Bitmap := curimg ; //testing the previous line
//My image is always greater than 25x25 but I only need a 25x25 box
for I := 0 to 25 do
begin
for y := 0 to 25 do
begin
r := r + GetRValue(curimg.Canvas.Pixels[y, I]);
g := g + GetGValue(curimg.Canvas.Pixels[y, I]);
b := b + GetBValue(curimg.Canvas.Pixels[y, I]);
end;
end;
r := r div (25 * 25);
g := g div (25 * 25);
b := b div (25 * 25);
rgbk := RGB(r, g, b);
Result = rgbk;
end;
img1
和image1
类型TImageBox
在我的表单上。
答案 0 :(得分:4)
首先应将局部变量r,g,b: integer
初始化为零。
答案 1 :(得分:3)
有一点似乎是错误的,在评论中你说你有25 * 25的图像,但你循环超过26 * 26像素,所以循环应该是:
for I := 0 to 24 do
begin
for y := 0 to 24 do