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

Вниз

захват изображения с WEB - камеры   Найти похожие ветки 

 
ChekhlatyAndrew ©   (2003-09-15 20:24) [0]

Подскажите, пожалуйста, как можно осуществить захват "фотографий" с Web - камеры ? (т.е. нужно захватить не видео а только мгновенную фотографию...)


 
pasha_676 ©   (2003-09-16 12:06) [1]

Если камера имеет WDM дрова и цепляется через Direct то с помощью фильтра SampleGraber - см DSPack - www.progdigy.com


 
Оззя   (2003-09-17 12:21) [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.

Взято с Исходников.ru http://www.sources.ru


 
pasha_676 ©   (2003-09-17 13:01) [3]


> Для использования следующиего примера необходимо иметь "Microsoft
> Video for Windows SDK".

Мне бы такую уверенность, что все сегодняшние устройства (и их дрова)видеоввода позволяют работать через VFW. Но к сожалению далеко не все и далеко не все работают корректно.

Кстати, что бы такие вещи делать VFW SDK нафиг не нужен. Нужен vfw.pas и умение жать кнопку F1 в дельфи хелпе.



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

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

Наверх




Память: 0.48 MB
Время: 0.018 c
1-63145
Kettle of delphi
2004-01-10 15:50
2004.01.20
OnPaint окна приложения


3-63003
Rio
2003-12-23 12:34
2004.01.20
Фильтрация данных


1-63077
SMT
2004-01-08 17:57
2004.01.20
Применение процедур Canvas.TextWidth и Canvas.TextHeight


6-63270
Yakudza
2003-11-19 12:31
2004.01.20
Как оборвать соединение с инетом ?


4-63437
Shluz
2003-11-15 00:59
2004.01.20
Координаты мыши в системе одного приложения