1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ExtDlgs, TeeProcs, TeEngine, Chart, Series;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
OpenPictureDialog1: TOpenPictureDialog;
Chart1: TChart;
Series1: TBarSeries;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
FName:string;
begin
if OpenPictureDialog1.Execute then
begin
FName := OpenPictureDialog1.FileName;
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Image2.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
M: array [0..256] of integer;
i,j,R, G, B, S:integer;
myColor : TColor;
begin
for i:=1 to Image1.Width do begin
for j:=1 to Image1.Height do begin
myColor := Image1.Canvas.pixels[i,j];
R:= GetRValue(MyColor);
G:= GetGValue(MyColor);
B:= GetBValue(MyColor);
S:=(R+G+B)div 3;
Image2.Canvas.Pixels[i,j]:=RGB(S,S,S);
end;
end;
Chart1.Series[0].Clear;
for i:=0 to 255 do M[i]:=0;
for i:=1 to Image1.Width do begin
for j:=1 to Image1.Height do begin
myColor := Image2.Canvas.pixels[i,j];
//R:= GetRValue(MyColor);
//G:= GetGValue(MyColor);
//B:= GetBValue(MyColor);
//S:=(R+G+B)div 3;
// myColor := Image1.Canvas.pixels[i,j];
// Image2.Canvas.Pixels[i,j]:=RGB(S,S,S);
M[R]:=M[R]+1;
end;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
M: array [0..256] of integer;
i:integer;
begin
for i:=0 to 255 do begin
Chart1.Series[0].AddXY(i,M[i])
end;
end;
end. |