6 System.SysUtils, System.Types, System.UITypes, System.Classes,
8 FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Ani, FMX.Layouts,
10 FMX.StdCtrls, FMX.Media, FMX.Objects, FMX.TabControl, FMX.Graphics, Unit2,
11 FMX.TextLayout, FMX.ListBox;
15 ToolbarHolder: TLayout;
17 ToolbarPopupAnimation: TFloatAnimation;
19 ToolbarApplyButton: TButton;
20 ToolbarCloseButton: TButton;
21 ToolbarAddButton: TButton;
22 TabControl1: TTabControl;
27 CameraComponent1: TCameraComponent;
32 SpeedButton1: TSpeedButton;
33 OpenDialog1: TOpenDialog;
38 ProgressBar1: TProgressBar;
40 procedure ToolbarCloseButtonClick(Sender: TObject);
41 procedure FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo;
42 var Handled: Boolean);
43 procedure FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
45 procedure CameraComponent1SampleBufferReady(Sender: TObject;
47 procedure SpeedButton1Click(Sender: TObject);
48 procedure Button1Click(Sender: TObject);
49 procedure FormCreate(Sender: TObject);
50 procedure FormDestroy(Sender: TObject);
51 procedure Button3Click(Sender: TObject);
52 procedure Image1Paint(Sender: TObject; Canvas: TCanvas;
54 procedure Button2Click(Sender: TObject);
55 procedure Button4Click(Sender: TObject);
56 procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
57 Shift: TShiftState; X, Y: Single);
58 procedure Button5Click(Sender: TObject);
60 FGestureOrigin: TPointF;
61 FGestureInProgress: Boolean;
65 procedure ShowToolbar(AShow: Boolean);
77 procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
80 if Key = vkEscape then
81 ShowToolbar(not ToolbarPopup.IsOpen);
84 procedure TForm1.Image1Paint(Sender: TObject; Canvas: TCanvas;
91 s := TTextLayoutManager.DefaultTextLayout.Create;
93 for i := 0 to obj.numRect - 1 do
99 s.Color := TAlphaColors.Blue;
100 s.Text := j.ToString;
101 s.TopLeft := PointF(obj.ar[i].Left, obj.ar[i].Top);
103 s.RenderLayout(Canvas);
111 procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
112 Shift: TShiftState; X, Y: Single);
115 obj.nn.cadidate:=ListBox1.Items;
116 obj.nrecg(recg.model[recg.rIndex],recg.boundary[recg.rIndex]);
119 procedure TForm1.ToolbarCloseButtonClick(Sender: TObject);
121 Application.Terminate;
124 procedure TForm1.Button1Click(Sender: TObject);
126 Image1.Bitmap.Assign(buf1);
129 obj.Color := TAlphaColors.Red;
130 obj.BinaryGray(Image1.Bitmap, 77, true);
131 obj.DetectArea(Image1.Bitmap);
135 procedure TForm1.Button2Click(Sender: TObject);
139 obj.nn.learnBP3(5000);
142 procedure TForm1.Button3Click(Sender: TObject);
144 if OpenDialog1.Execute = true then
146 buf1.LoadFromFile(OpenDialog1.FileName);
147 Image1.Bitmap.Assign(buf1);
151 procedure TForm1.Button4Click(Sender: TObject);
153 recg.BinaryGray(Image2.Bitmap,77,true);
154 recg.DetectArea(Image2.Bitmap);
157 procedure TForm1.Button5Click(Sender: TObject);
159 if OpenDialog1.Execute = true then
160 obj.loadModels(OpenDialog1.FileName);
163 procedure TForm1.CameraComponent1SampleBufferReady(Sender: TObject;
168 if TabControl1.TabIndex = 0 then
171 bmp := Image1.Bitmap;
172 CameraComponent1.SampleBufferToBitmap(bmp, true);
175 procedure TForm1.FormCreate(Sender: TObject);
177 obj := TFourier.Create;
178 recg := TFourier.Create;
179 buf1 := TBitmap.Create;
180 buf2 := TBitmap.Create;
181 buf1.Assign(Image1.Bitmap);
184 procedure TForm1.FormDestroy(Sender: TObject);
192 procedure TForm1.FormGesture(Sender: TObject;
193 const EventInfo: TGestureEventInfo; var Handled: Boolean);
197 if EventInfo.GestureID = igiPan then
199 if (TInteractiveGestureFlag.gfBegin in EventInfo.Flags) and
200 ((Sender = ToolbarPopup) or (EventInfo.Location.Y > (ClientHeight - 70)))
203 FGestureOrigin := EventInfo.Location;
204 FGestureInProgress := true;
207 if FGestureInProgress and (TInteractiveGestureFlag.gfEnd in EventInfo.Flags)
210 FGestureInProgress := False;
211 DX := EventInfo.Location.X - FGestureOrigin.X;
212 DY := EventInfo.Location.Y - FGestureOrigin.Y;
213 if (Abs(DY) > Abs(DX)) then
219 procedure TForm1.ShowToolbar(AShow: Boolean);
221 ToolbarPopup.Width := ClientWidth;
222 ToolbarPopup.PlacementRectangle.Rect :=
223 TRectF.Create(0, ClientHeight - ToolbarPopup.Height, ClientWidth - 1,
225 ToolbarPopupAnimation.StartValue := ToolbarPopup.Height;
226 ToolbarPopupAnimation.StopValue := 0;
228 ToolbarPopup.IsOpen := AShow;
231 procedure TForm1.SpeedButton1Click(Sender: TObject);
233 CameraComponent1.Active := SpeedButton1.IsPressed;
234 if SpeedButton1.IsPressed = False then
235 if TabControl1.TabIndex = 0 then
236 buf2.Assign(Image2.Bitmap)
238 buf1.Assign(Image1.Bitmap);