|
Вопрос # 4 809/ вопрос открыт / |
|
Здрасте. Вы уже не раз мне помогли, за что Вам сильно благодарен.!!!
А у меня тут новая проблемка. Помогите и в этот раз плз = )
Суть проги: с камеры тяну видеопоток. Из него вихватываю картинку, через пару секунд еще одну. Картинки сравниваются по пикселям. Если не похожие - тогда сигнализируется про движение.
Короче такая сигнализация =)
Дальше выдам код и прицеплю исходник.
1.Вот проблемы: Не показывает устройства при выборе.
2. В модуле DSPack бьет ерором в строке
hr := SampleGrabber.GetConnectedMediaType(MediaType);
подозреваю что это изза первой проблемы.
И наверное еще есть. Помогите разобратся. Надо прогу до ума довести.
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, DSPack, DSUtil, DirectShow9, ExtCtrls;
-
-
- type
- TForm1 = class(TForm)
- FilterGraph1: TFilterGraph;
- Filter1: TFilter;
- SampleGrabber1: TSampleGrabber;
- VideoWindow1: TVideoWindow;
- Button1: TButton;
- Button2: TButton;
- CheckBox1: TCheckBox;
- ComboBox1: TComboBox;
- Timer1: TTimer;
- Image1: TImage;
- Image2: TImage;
- Memo1: TMemo;
- procedure FormCreate(Sender: TObject);
- procedure ComboBox1Change(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure CheckBox1Click(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
-
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
- VideoDevice: TSysDevEnum;
- implementation
-
- {$R *.dfm}
-
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
-
- begin
- FilterGraph1.Play;
-
- end
- else
- begin
- FilterGraph1.Stop;
-
- end;
- end;
-
-
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- SampleGrabber1.GetBitmap(Image1.Picture.Bitmap);
- end;
-
- procedure TForm1.CheckBox1Click(Sender: TObject);
- begin
- if CheckBox1.Checked then Timer1.Enabled:=true
- else Timer1.Enabled:=false;
- end;
-
- procedure TForm1.ComboBox1Change(Sender: TObject);
- begin
- FilterGraph1.ClearGraph;
- FilterGraph1.Active := false;
-
- Filter1.BaseFilter.Moniker := VideoDevice.GetMoniker(ComboBox1.ItemIndex);
- FilterGraph1.Active := true;
-
- with FilterGraph1 as ICaptureGraphBuilder2 do
- RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter1 as IBaseFilter, SampleGrabber1 as IBaseFilter,
VideoWindow1 as IbaseFilter);
-
- FilterGraph1.Play;
- Button1.Enabled:=True;
- end;
-
-
- 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.Timer1Timer(Sender: TObject);
- var
-
- i:integer;
-
- 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;
-
- 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];
-
- r1:=GetRValue(FirstColor);
- g1:=GetGValue(FirstColor);
- b1:=GetBValue(FirstColor);
- SecondColor:=Image2.Picture.Bitmap.Canvas.Pixels[i,j];
- r2:=GetRValue(SecondColor);
- g2:=GetGValue(SecondColor);
- b2:=GetBValue(SecondColor);
-
- 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
-
- Image2.Picture.Bitmap.SaveToFile('log\'+FormatDateTime('hhnnss',Now)+'.bmp');
- end;
- end;
- end.
-
-
 |
Вопрос задал: hatecows (статус: Посетитель)
Вопрос отправлен: 11 декабря 2010, 23:01
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 13 декабря 2010, 03:55; участников в обсуждении: 3.
|
hatecows (статус: Посетитель), 12 декабря 2010, 00:41 [#1]:
в чем ошыбки то ? хоть что - то...
|
|
min@y™ (статус: Доктор наук), 12 декабря 2010, 08:10 [#2]:
Цитата (hatecows):
в чем ошыбки то ? хоть что - то...
Ну и чего ты предлагаешь? Всем срочно встать с дивана, бежать в магазин покупать камеру, подключать эту камеру к компу, качать DSPack, устанавливать его, затем грузить твой код в Delphi и искать ошибку? Я правильно понял?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
hatecows (статус: Посетитель), 12 декабря 2010, 14:52 [#3]:
Нет. Хотя бы код пролистать, может я там грубо чего напортачил.
|
|
Вадим К (статус: Академик), 12 декабря 2010, 17:50 [#4]:
начнем с простого - в системе определяется видео устройство или нет? Например в скайпе?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
hatecows (статус: Посетитель), 13 декабря 2010, 03:55 [#5]:
Да. Вебка работает.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|