AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi frames von zwei identischen webcams grabben
Thema durchsuchen
Ansicht
Themen-Optionen

frames von zwei identischen webcams grabben

Ein Thema von tillitanglebob · begonnen am 17. Apr 2007 · letzter Beitrag vom 18. Apr 2007
Antwort Antwort
tillitanglebob

Registriert seit: 8. Okt 2006
Ort: Dresden
7 Beiträge
 
Delphi 6 Personal
 
#1

frames von zwei identischen webcams grabben

  Alt 17. Apr 2007, 13:18
Hi ihr da draußen,
ich möchte (möglichst ohne die Hilfe von fertigen Komponenten, denn ich will ja was lernen) die Frames von zwei baugleichen Webcams grabben. Anschließend sollen sie zur weiteren Bearbeitung in zwei Images geladen werden. Die Kameras sind zwei SPEEDLINK sqare webcams SL-6810.
Ich habe mich schon im Forum und der win-api-reference ein bissel kundig gemacht, habe mir aber aus dem, was ich verstanden habe, bisher nur folgenden nicht sehr hilfreichen Schnipsel zusammensuchen können:

Delphi-Quellcode:
unit scanneruI;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Clipbrd, Math;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Timer1: TTimer;
    Image2: TImage;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

  private

  handle: THandle;

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
var
  vdevice: boolean;


const
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_EDIT_COPY = WM_USER + 30;
  WM_CAP_GRAB_FRAME_NOSTOP = WM_USER + 61;
  //WM_CAP_SET_MCI_DEVICE = WM_USER + 66;
  WM_CAP_DLG_VIDEOSOURCE = WM_USER + 42;
implementation

{$R *.dfm}

function capCreateCaptureWindow(lpszWindowName: LPCSTR;
  dwStyle: DWORD; x, y, nWidth, nHeight: integer;
  hwndParent: HWND; nID: integer): HWND; stdcall;
  external 'AVICAP32.DLLname 'capCreateCaptureWindowA';


procedure TForm1.FormCreate(Sender: TObject);
begin
handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 640, 480, Panel1.handle, 0);
  SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  clipboard.Clear;
  SendMessage(handle, WM_CAP_DLG_VIDEOSOURCE, 0, 0);
  SendMessage(handle, WM_CAP_GRAB_FRAME_NOSTOP, 1, 0);
  SendMessage(handle, WM_CAP_EDIT_COPY, 1, 0);
  if vdevice then
    image1.Picture.LoadFromClipboardFormat(cf_BitMap,Clipboard.GetAsHandle(cf_Bitmap),0)
  else
    image2.Picture.LoadFromClipboardFormat(cf_BitMap,Clipboard.GetAsHandle(cf_Bitmap),0);

  vdevice:= not vdevice;
end;

end.
Es wäre jetzt also interessant zu wissen, wie man das source-device aus dem Programm heraus ohne Dialog festlegt, oder wie man möglicherweise gleichzeitig zwei Webcams initialisiert und ausliest, obwohl ich gelesen habe, dass es da Probleme mit den Treibern gibt. Die Sache mit der Dekompression über die Zwischenablage stellt für mich der Einfachheit halber kein problem dar, da ich das Ganze alleinig und im Vordergrund laufen lassen will.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: frames von zwei identischen webcams grabben

  Alt 17. Apr 2007, 13:31
Die Frage ist ob die Treiber fuer die Webcam ueberhaupt zwei Geraete unterstuetzen. Webcam-USB-Treiber sind dafuer beruechtigt nur eine Webcam zu koennen.
  Mit Zitat antworten Zitat
tillitanglebob

Registriert seit: 8. Okt 2006
Ort: Dresden
7 Beiträge
 
Delphi 6 Personal
 
#3

Re: frames von zwei identischen webcams grabben

  Alt 17. Apr 2007, 13:41
ich glabe nicht, dass sie zwei webcams zugleich unterstützen, aber man könnte ja auch beide webcams abwechselnd initialisieren. mir geht es nicht so sehr um schnelligkeit. mich interessiert ehr wie man ohne einen dialog das sourcedevice festlegt. gibts da vielleicht einen api-befehl?
  Mit Zitat antworten Zitat
tillitanglebob

Registriert seit: 8. Okt 2006
Ort: Dresden
7 Beiträge
 
Delphi 6 Personal
 
#4

Re: frames von zwei identischen webcams grabben

  Alt 17. Apr 2007, 13:44
es funktioniert übrigens zwei webcams anzuschließen und sie immer abwechseld per dlg_videosource auszuwählen. nervt eben bloß!
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

Re: frames von zwei identischen webcams grabben

  Alt 18. Apr 2007, 11:39
Soviel ich weiß kann man mit VfW immer nur eine Video Capture-Quelle ansprechen.

Mit DirectShow kann man auch mehrere gleichzeitig verwenden.
Fertige Komponenten sind zum Beispiel das DSPack (frei).

Einfach mal runterladen und in den Beispielen und im Unit-Code stöbern...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz