ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ΅ Π·ΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Π° web-ΠΊΠ°ΠΌΠ΅ΡΠ°. ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π² 17:54, 18 Π½ΠΎΡΠ±ΡΡ 2012 ΠΏΠΎ http://www.web-kamera.ru/device/. Memo1.Lines.Add (FormatDateTime ('hh:nn:ss', Now)+(`Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΡ'); RenderStream (@PIN_CATEGORY_PREVIEW, nil, Filter1asIBaseFilter, SampleGrabber1asIBaseFilter, VideoWindow1asIbaseFilter); ShowMessage (`ΠΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌ! Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ!'); ΠΡΠ»ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°Π·Π½ΡΠ΅… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ΅ Π·ΡΠ΅Π½ΠΈΠ΅ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠΊΠ°Π·Π°Π»Π° Ρ ΠΎΡΠΎΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΏΠΎΠ»Π΅ Π·ΡΠ΅Π½ΠΈΡ web-ΠΊΠ°ΠΌΠ΅ΡΡ.
ΠΡΠΈ Π½ΠΈΠ·ΠΊΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π»Π° Π½Π° Π»ΡΠ±ΠΎΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ΅Π΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅: ΠΌΠΎΡΠ³Π°Π½ΠΈΠ΅, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π³ΡΡΠ΄Π½ΠΎΠΉ ΠΊΠ»Π΅ΡΠΊΠΈ ΠΈ ΠΏΡΠΎΡΠ΅Π΅. ΠΡΠΈ Π²ΡΡΠΎΠΊΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π»Π° Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠ³Π° ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΆΠ΅ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π»Π° Π½Π° ΡΡΠΈΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΊΠΎΠΉ. ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠ»ΡΡΡΠ°ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ½ΠΈΠ·ΠΈΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ (ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Ρ ΡΡΠΌΠ°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡΠΎΠΊΠ΅) ΠΈ, Π² ΡΠ΅Π»ΠΎΠΌ, ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
Π’Π°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ «Π‘ΡΠΎΡΠΎΠΆΠ°». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ ΠΏΠΎΠ΄ ΠΎΠΊΠ½ΠΎΠΌ, ΡΠΎ web-ΠΊΠ°ΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ½ΠΈΠΌΠ°ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΏΠΎΠΊΠ° Π²Ρ ΡΠΏΠΈΡΠ΅, Π° ΡΡΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅Π» Π½ΠΎΡΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ. ΠΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΡ Ρ «ΠΠΎΡΠ½ΠΎΠΉ ΡΠΌΠ΅Π½ΠΎΠΉ» ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΡΠΌΠ΅ΡΡΠΈΡΡΡ Π½Π° 2−5 ΠΠ± ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ°.
Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
- 1. Π Π°Π΄ΠΈΠΎΡΠ΅Ρ Π½ΠΈΠΊΠ° ΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠ°. (2010Π³). Claw.ru: ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ½ΡΠΈΠΊΠ»ΠΎΠΏΠ΅Π΄ΠΈΡ. ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ 10:54, 18 Π½ΠΎΡΠ±ΡΡ 2012 ΠΏΠΎ http://tehno.claw.ru/shared/kinder/0330.htm.
- 2. ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Π° web-ΠΊΠ°ΠΌΠ΅ΡΠ°. ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π² 17:54, 18 Π½ΠΎΡΠ±ΡΡ 2012 ΠΏΠΎ http://www.web-kamera.ru/device/.
- 3. ΠΠ°ΡΡΠ΅ΡΠ° DELPHI http://www.delphimaster.ru/.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Unit Unit1;
interface.
uses.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,.
Dialogs, Menus, DSPack, DSUtil, DirectShow9, StdCtrls, ExtCtrls, MPlayer;
type.
TForm1=class (TForm).
FilterGraph:TFilterGraph;
VideoWindow1:TVideoWindow;
Filter1:TFilter;
ComboBox1:TComboBox;
Label1:TLabel;
Image1:TImage;
Button1:TButton;
ButtonStopPlay:TButton;
Image2:TImage;
SampleGrabber1:TSampleGrabber;
Label3:TLabel;
Label4:TLabel;
CheckBox1:TCheckBox;
Timer1:TTimer;
Memo1:TMemo;
Label2:TLabel;
CheckBox2:TCheckBox;
MediaPlayer1:TMediaPlayer;
Procedure FormCreate (Sender:TObject);
Procedure ComboBox1Change (Sender:TObject);
Procedure Button1Click (Sender:TObject);
Procedure ButtonStopPlayClick (Sender:TObject);
Procedure Button3Click (Sender:TObject);
Procedure Button4Click (Sender:TObject);
Procedure Button5Click (Sender:TObject);
Procedure CheckBox1Click (Sender:TObject);
Procedure Timer1Timer (Sender:TObject);
private.
public.
end;
var.
Form1:TForm1;
VideoDevice:TSysDevEnum;
implementation.
procedure TForm1. FormCreate (Sender:TObject);
var.
i:integer;
begin.
VideoDevice:=TSysDevEnum.Create (CLSID_VideoInputDeviceCategory);
If VideoDevice. CountFilters > 0 then.
For i:=0 to VideoDevice. CountFilters-1 do.
ComboBox1.Items.Add (VideoDevice.Filters[i]. FriendlyName);
end;
procedure TForm1. ComboBox1Change (Sender:TObject);
begin.
FilterGraph.ClearGraph;
FilterGraph.Active:=false;
//ΠΠ°Π΄Π°Π΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
Filter1.BaseFilter.Moniker:=VideoDevice.GetMoniker (ComboBox1.ItemIndex);
FilterGraph.Active:=true;
//ΠΠ°Π΄Π°Π΅ΠΌ ΡΡΠΎ ΠΎΡΠΊΡΠ΄Π° Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈ ΠΊΡΠ΄Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ.
With FilterGraphasICaptureGraphBuilder2 do.
RenderStream (@PIN_CATEGORY_PREVIEW, nil, Filter1asIBaseFilter, SampleGrabber1asIBaseFilter, VideoWindow1asIbaseFilter);
//ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
FilterGraph.Play;
end;
procedure TForm1. Button1Click (Sender:TObject);
begin.
SampleGrabber1.GetBitmap (Image1.Picture.Bitmap);
end;
procedure TForm1. ButtonStopPlayClick (Sender:TObject);
begin.
if ButtonStopPlay. Caption= 'Π‘ΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΈΠ΄Π΅ΠΎ' then.
begin.
FilterGraph.Play;
ButtonStopPlay.Caption:=`ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΠΈΠ΄Π΅ΠΎ';
end.
else.
begin.
FilterGraph.Stop;
ButtonStopPlay.Caption:='Π‘ΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΈΠ΄Π΅ΠΎ';
end;
end;
procedure TForm1. Button3Click (Sender:TObject);
var.
//i-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ.
i:integer;
//j-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ.
j:integer;
//ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ.
k:integer;
begin.
SampleGrabber1.GetBitmap (Image2.Picture.Bitmap);
k:=0;
//ΠΡΠ»ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ, ΡΠΎ ΡΠΌΡΡΠ»Π° ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π½Π΅Ρ,.
//ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΠΌ Π²ΡΡ ΠΎΠ΄.
if (Image1.Picture.Bitmap.WidthImage2.Picture.Bitmap.Width).
or (Image1.Picture.Bitmap.HeightImage2.Picture.Bitmap.Height).
then.
begin.
ShowMessage (`ΠΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌ! Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ!');
exit;
end;
//ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΏΠΎΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅.
For i:=1 to Image1.Picture.Bitmap.Height do.
begin.
for j:=1 to Image1. Pictur e.Bitmap.Width do.
begin.
//Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΠΎΠ±Π΅ΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ.
Ifnot (Image1.Picture.Bitmap.Canvas.Pixels[i, j]=Image2.Picture.Bitmap.Canvas.Pixels[i, j]).
Then k:=k+1;
//ΠΠ°Π΅ΠΌ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ.
Application.ProcessMessages;
end;
end;
//ΠΡΠ»ΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ Π½Π΅Ρ ΡΠΎ ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌ ΠΎΠ± ΡΡΠΎΠΌ.
If k=0 then ShowMessage (`ΠΠ°ΡΡΠΈΠ½ΠΊΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ');
end;
procedure TForm1. Button4Click (Sender:TObject);
var.
K, S: integer;
r, g, b:Byte;
Color:TColor;
begin.
r:=GetRValue (K);
g:=GetGValue (K);
b:=GetBValue (K);
r:=GetRValue (S);
g:=GetGValue (S);
b:=GetBValue (S);
end;
procedure TForm1. Button5Click (Sender:TObject);
var.
//i-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ.
i:integer;
//j-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ.
j:integer;
//ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ.
k:integer;
o:integer;
r, g, b:Byte;
Color:TColor;
S:integer;
begin.
Image1.Picture.Bitmap.Monochrome:=true;
SampleGrabber1.GetBitmap (Image1.Picture.Bitmap);
exit;
//ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ.
For i:=1 to Image1.Picture.Bitmap.Height do.
For j:=1 to Image1.Picture.Bitmap.Width do.
begin.
K:=Image1.Picture.Bitmap.Canvas.Pixels[i, j];
r:=GetRValue (K);
g:=GetGValue (K);
b:=GetBValue (K);
b:=r;g:=r;
K:=RGB (r, g, b);
end;
end;
procedure TForm1. CheckBox1Click (Sender:TObject);
begin.
if CheckBox1. CheckedthenTimer1.Enabled:=true.
else Timer1. Enabled:=false;
end;
procedure TForm1. Timer1Timer (Sender:TObject);
var.
//i-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ.
i:integer;
//j-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ.
j:integer;
//ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ.
k:integer;
r1,g1,b1:Byte;
r2,g2,b2:Byte;
FirstColor, SecondColor: Integer;
Color:TColor;
PriznakChange:byte;
begin.
//ΠΠ΅Π»Π°Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ½ΠΈΠΌΠΎΠΊ.
If Timer1. Tag=0 then.
begin.
SampleGrabber1.GetBitmap (Image1.Picture.Bitmap);
Timer1.Tag:=1;
exit;
end;
//Π§Π΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΎΡΠΎΠΉ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄Π΅ΠΌ ΡΠ²Π΅ΡΡΡΡ SampleGrabber1. GetBitmap (Image2.Picture.Bitmap);
Timer1.Tag:=0;
k:=0;
//ΠΡΠ»ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ, ΡΠΎ ΡΠΌΡΡΠ»Π° ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π½Π΅Ρ,.
//ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΠΌ Π²ΡΡ ΠΎΠ΄.
if (Image1.Picture.Bitmap.WidthImage2.Picture.Bitmap.Width).
or.
(Image1.Picture.Bitmap.HeightImage2.Picture.Bitmap.Height).
then.
begin.
//ΠΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌ! Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ!'.
exit;
end;
//ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΏΠΎΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅.
For i:=1 to Image1.Picture.Bitmap.Height do.
begin.
for j:=1 to Image1.Picture.Bitmap.Width do.
begin.
//ΠΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
PriznakChange:=0;
//ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ²Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ FirstColor:=Image1.Picture.Bitmap.Canvas.Pixels[i, j];
//ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ RGB.
r1:=GetRValue (FirstColor);
g1:=GetGValue (FirstColor);
b1:=GetBValue (FirstColor);
//ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ²Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π²ΡΠΎΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ SecondColor:=Image2.Picture.Bitmap.Canvas.Pixels[i, j];
//ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ RGB.
r2:=GetRValue (SecondColor);
g2:=GetGValue (SecondColor);
b2:=GetBValue (SecondColor);
//ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ RGB.
If Abs (r1-r2)>20 then inc (PriznakChange);
If Abs (g1-g2)>20 then inc (PriznakChange);
If Abs (b1-b2)>20 then inc (PriznakChange);
//ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°ΠΌΠΈ.
If PriznakChange=3 then k:=k+1;
//ΠΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅, ΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ.
Application.ProcessMessages;
end;
end;
//ΠΠ°Π΅ΠΌ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ.
If k>2000 then.
begin.
Memo1.Lines.Add (FormatDateTime ('hh:nn:ss', Now)+(`Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΡ');
//ΠΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΠΎΠ»ΡΡΠ΅ 2000 (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ) Image2.Picture.Bitmap.SaveToFile ('log'+FormatDateTime ('hhnnss', Now)+'.jpeg');
If CheckBox2. Checked=true then.
begin.
MediaPlayer1.FileName:='C:shvvSIGNAL.wav';
MediaPlayer1.Open;
MediaPlayer1.Play;
end.
else MediaPlayer1. Stop;
end;
end;
end.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.