procedure TForm1.ToolButton1Click(Sender: TObject);
begin
if hWndC <> 0 then exit;
hWndC := capCreateCaptureWindowA('WebCam no Turbo Delphi',WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top,320,240,Form1.Handle,0);
if hWndC <> 0 then
begin
SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0);
SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0);
SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0);
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0);
SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0);
SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);
SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
end;
end;
SALVA A IMAGEM CAPTURADA
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
if hWndC <> 0 then
begin
SendMessage(hWndC,WM_CAP_SAVEDIB,0,longint(pchar('c:\teste.bmp')));
end;
end;
Fiz o teste em um computador que não tem webcam, mas tem uma placa de tv.
Foi capturado o vídeo, do que estava passando na tv, mesmo com o programa da tv desligado.
Quando fiz o teste em um notebook com webcam, foi capturado uma imagem preta, e não o que a webcam estava filmando.
Alguém pode me ajudar com isso???
Por que foi capturada uma imagem preta?
É preciso fazer alguma coisa com a webcam? Ligar? Ou ela já está ligada? (Desculpem a ignorância, mas nunca tive contato com webcam)
Pergunta
Gabriel Cabral
Oi gente...
Estou a um bom tempo procurando componentes e/ou funções que façam a captura de imagens de uma webcam..
Utilizei então o melhor que eu encontrei..
DECLARAÇÕES
var Form1: TForm1; hWndC : THandle = 0; 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; const WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ 63; const WM_CAP_SET_OVERLAY =WM_CAP_START+ 51; const WM_CAP_SET_PREVIEW =WM_CAP_START+ 50; const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6; const WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2; const WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3; const WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5; const WM_CAP_SET_SCALE=WM_CAP_START+ 53; const WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ 52; 04/08/07 Eduardo function capCreateCaptureWindowA(lpszWindowName : PCHAR; dwStyle : longint; x : integer; y : integer;nWidth : integer;nHeight : integer;ParentWin : HWND; nId : integer): HWND; STDCALL; EXTERNAL 'AVICAP32.DLL';CAPTURAprocedure TForm1.ToolButton1Click(Sender: TObject); begin if hWndC <> 0 then exit; hWndC := capCreateCaptureWindowA('WebCam no Turbo Delphi',WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top,320,240,Form1.Handle,0); if hWndC <> 0 then begin SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0); SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0); SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0); SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0); SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0); SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0); end; end;SALVA A IMAGEM CAPTURADAprocedure TForm1.ToolButton4Click(Sender: TObject); begin if hWndC <> 0 then begin SendMessage(hWndC,WM_CAP_SAVEDIB,0,longint(pchar('c:\teste.bmp'))); end; end;Fiz o teste em um computador que não tem webcam, mas tem uma placa de tv.
Foi capturado o vídeo, do que estava passando na tv, mesmo com o programa da tv desligado.
Quando fiz o teste em um notebook com webcam, foi capturado uma imagem preta, e não o que a webcam estava filmando.
Alguém pode me ajudar com isso???
Por que foi capturada uma imagem preta?
É preciso fazer alguma coisa com a webcam? Ligar? Ou ela já está ligada? (Desculpem a ignorância, mas nunca tive contato com webcam)
Muito obrigado.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.