获取图像的平均颜色

时间:2011-10-11 06:42:56

标签: delphi

我正在尝试获取图像的平均颜色。我尝试了各种方法,现在我使用下面的代码,但是我无法得到正确的结果。

有人能解释我的代码有什么问题吗?

  //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;

img1image1类型TImageBox在我的表单上。

2 个答案:

答案 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