Прошу помочь дописать код. В PaintBox после открытия изображения должна появляться гистограмма яркости цветов. Гистограмма должна вычисляться в массиве счетчиков, значения элементов которого - это пиксели изображения с соответствующей яркостью
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
Buttons, ExtDlgs;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Image1: TImage;
PaintBox1: TPaintBox;
OpenPictureDialog1:TOpenPictureDialog;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
Color: TColor;
R,G,B,q: Byte;
x,y,k : Integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
If OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
k:=0;
//Под яркостью пикселя будем понимать среднее значение его цветовых компонентов(R+G+B)div3.
for x:=0 to 100 do
for y:= 0 to 100 do begin
q:=Image1.Picture.Bitmap.Canvas.Pixels[x,y]; // у меня только одно число а их должно быть R, G, B. не понимаю как их получить
{Color:=Image1.Picture.Bitmap.Canvas.Pixels[x,y];
R:= GetRValue(Color);
G:= GetGValue(Color);
B:= GetBValue(Color); }
k:= k + q; // числа суммирую для проверки
end;
Edit1.Text:= Inttostr(k); //вывод для просмотра
end;
end.