Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.15;
Скачать: CL | DM;

Вниз

Подскажите, если кто знает. Как писать захвать изображение с каме   Найти похожие ветки 

 
grant   (2005-08-10 11:47) [0]

Подскажите, если кто знает. Как писать захвать изображение с web камеры.


 
wal ©   (2005-08-10 11:54) [1]

Win32 help, статья Video Capture.

C уважением


 
Kazazh   (2005-08-10 12:51) [2]

Для использования следующиего примера необходимо иметь "Microsoft Video for Windows SDK". Пример показывает, как открыть видео устройство для захвата видео, как сграбить фрейм с устройства, как сохранить этот фрейм на диск в виде файла .BMP, как записать .AVI файл (со звуком, но без предварительного просмотра), и как закрыть устройство.

Замечание: Для работы примера необходимо иметь установленное устройство захвата видео (video capture device).

Пример:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls;

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   OpenVideo: TButton;
   CloseVideo: TButton;
   GrabFrame: TButton;
   SaveBMP: TButton;
   StartAVI: TButton;
   StopAVI: TButton;
   SaveDialog1: TSaveDialog;
   procedure FormCreate(Sender: TObject);
   procedure OpenVideoClick(Sender: TObject);
   procedure CloseVideoClick(Sender: TObject);
   procedure GrabFrameClick(Sender: TObject);
   procedure SaveBMPClick(Sender: TObject);
   procedure StartAVIClick(Sender: TObject);
   procedure StopAVIClick(Sender: TObject);
 private
   { Private declarations }
   hWndC: THandle;
   CapturingAVI: bool;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

const
 WM_CAP_START = WM_USER;
const
 WM_CAP_STOP = WM_CAP_START + 68;
const
 WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
const
 WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
const
 WM_CAP_SAVEDIB = WM_CAP_START + 25;
const
 WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
const
 WM_CAP_SEQUENCE = WM_CAP_START + 62;
const
 WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;

function capCreateCaptureWindowA(lpszWindowName: PCHAR;
 dwStyle: longint;
 x: integer;
 y: integer;
 nWidth: integer;
 nHeight: integer;
 ParentWin: HWND;
 nId: integer): HWND;
 stdcall external "AVICAP32.DLL";

procedure TForm1.FormCreate(Sender: TObject);
begin
 CapturingAVI := false;
 hWndC := 0;
 SaveDialog1.Options :=
   [ofHideReadOnly, ofNoChangeDir, ofPathMustExist]
end;

procedure TForm1.OpenVideoClick(Sender: TObject);
begin
 hWndC := capCreateCaptureWindowA("My Own Capture Window",
   WS_CHILD or WS_VISIBLE,
   Panel1.Left,
   Panel1.Top,
   Panel1.Width,
   Panel1.Height,
   Form1.Handle,
   0);
 if hWndC <> 0 then
   SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
end;

procedure TForm1.CloseVideoClick(Sender: TObject);
begin
 if hWndC <> 0 then
 begin
   SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
   hWndC := 0;
 end;
end;

procedure TForm1.GrabFrameClick(Sender: TObject);
begin
 if hWndC <> 0 then
   SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0);
end;

procedure TForm1.SaveBMPClick(Sender: TObject);
begin
 if hWndC <> 0 then
 begin
   SaveDialog1.DefaultExt := "bmp";
   SaveDialog1.Filter := "Bitmap files (*.bmp)|*.bmp";
   if SaveDialog1.Execute then
     SendMessage(hWndC,
       WM_CAP_SAVEDIB,
       0,
       longint(pchar(SaveDialog1.FileName)));
 end;
end;

procedure TForm1.StartAVIClick(Sender: TObject);
begin
 if hWndC <> 0 then
 begin
   SaveDialog1.DefaultExt := "avi";
   SaveDialog1.Filter := "AVI files (*.avi)|*.avi";
   if SaveDialog1.Execute then
   begin
     CapturingAVI := true;
     SendMessage(hWndC,
       WM_CAP_FILE_SET_CAPTURE_FILEA,
       0,
       Longint(pchar(SaveDialog1.FileName)));
     SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);
   end;
 end;
end;

procedure TForm1.StopAVIClick(Sender: TObject);
begin
 if hWndC <> 0 then
 begin
   SendMessage(hWndC, WM_CAP_STOP, 0, 0);
   CapturingAVI := false;
 end;
end;

end.


 
Kazakh   (2005-08-10 12:52) [3]

Для использования следующиего примера необходимо иметь "Microsoft Video for Windows SDK". Пример показывает, как открыть видео устройство для захвата видео, как сграбить фрейм с устройства, как сохранить этот фрейм на диск в виде файла .BMP, как записать .AVI файл (со звуком, но без предварительного просмотра), и как закрыть устройство.

Замечание: Для работы примера необходимо иметь установленное устройство захвата видео (video capture device).

Пример:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls;

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   OpenVideo: TButton;
   CloseVideo: TButton;
   GrabFrame: TButton;
   SaveBMP: TButton;
   StartAVI: TButton;
   StopAVI: TButton;
   SaveDialog1: TSaveDialog;
   procedure FormCreate(Sender: TObject);
   procedure OpenVideoClick(Sender: TObject);
   procedure CloseVideoClick(Sender: TObject);
   procedure GrabFrameClick(Sender: TObject);
   procedure SaveBMPClick(Sender: TObject);
   procedure StartAVIClick(Sender: TObject);
   procedure StopAVIClick(Sender: TObject);
 private
   { Private declarations }
   hWndC: THandle;
   CapturingAVI: bool;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

const
 WM_CAP_START = WM_USER;
const
 WM_CAP_STOP = WM_CAP_START + 68;
const
 WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
const
 WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
const
 WM_CAP_SAVEDIB = WM_CAP_START + 25;
const
 WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
const
 WM_CAP_SEQUENCE = WM_CAP_START + 62;
const
 WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;

function capCreateCaptureWindowA(lpszWindowName: PCHAR;
 dwStyle: longint;
 x: integer;
 y: integer;
 nWidth: integer;
 nHeight: integer;
 ParentWin: HWND;
 nId: integer): HWND;
 stdcall external "AVICAP32.DLL";

procedure TForm1.FormCreate(Sender: TObject);
begin
 CapturingAVI := false;
 hWndC := 0;
 SaveDialog1.Options :=
   [ofHideReadOnly, ofNoChangeDir, ofPathMustExist]
end;

procedure TForm1.OpenVideoClick(Sender: TObject);
begin
 hWndC := capCreateCaptureWindowA("My Own Capture Window",
   WS_CHILD or WS_VISIBLE,
   Panel1.Left,
   Panel1.Top,
   Panel1.Width,
   Panel1.Height,
   Form1.Handle,
   0);
 if hWndC <> 0 then
   SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
end;

procedure TForm1.CloseVideoClick(Sender: TObject);
begin
 if hWndC <> 0 then
 begin
   SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
   hWndC := 0;
 end;
end;

procedure TForm1.GrabFrameClick(Sender: TObject);
begin
 if hWndC <> 0 then
   SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0);
end;

procedure TForm1.SaveBMPClick(Sender: TObject);
begin
 if hWndC <> 0 then
 begin
   SaveDialog1.DefaultExt := "bmp";
   SaveDialog1.Filter := "Bitmap files (*.bmp)|*.bmp";
   if SaveDialog1.Execute then
     SendMessage(hWndC,
       WM_CAP_SAVEDIB,
       0,
       longint(pchar(SaveDialog1.FileName)));
 end;
end;

procedure TForm1.StartAVIClick(Sender: TObject);
begin
 if hWndC <> 0 then
 begin
   SaveDialog1.DefaultExt := "avi";
   SaveDialog1.Filter := "AVI files (*.avi)|*.avi";
   if SaveDialog1.Execute then
   begin
     CapturingAVI := true;
     SendMessage(hWndC,
       WM_CAP_FILE_SET_CAPTURE_FILEA,
       0,
       Longint(pchar(SaveDialog1.FileName)));
     SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);
   end;
 end;
end;

procedure TForm1.StopAVIClick(Sender: TObject);
begin
 if hWndC <> 0 then
 begin
   SendMessage(hWndC, WM_CAP_STOP, 0, 0);
   CapturingAVI := false;
 end;
end;

end.


 
WondeRu ©   (2005-08-10 15:42) [4]

Kazakh   (10.08.05 12:52) [3]
Microsoft Video for Windows SDK

Удивляеете меня... Есть же более удобные стредства - DirectShow, OpenML... А Вы все тяпкой в огород пашете...

ЗЫ. качай DSPack http://wonderu.com/index.php?pid=2



Страницы: 1 вся ветка

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
2-1135723201
alyenka
2005-12-28 01:40
2006.01.15
как зделаь Font Selector


8-1123660039
grant
2005-08-10 11:47
2006.01.15
Подскажите, если кто знает. Как писать захвать изображение с каме


14-1134656616
IceBeerg
2005-12-15 17:23
2006.01.15
Параметры regedit а


6-1127822981
arhis
2005-09-27 16:09
2006.01.15
Исходящий траффик TServerSocket


14-1135158514
grisme
2005-12-21 12:48
2006.01.15
ШАХМАТЫ