AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Webcam in Delphi?

Offene Frage von "himitsu"
Ein Thema von Nicolai1234 · begonnen am 10. Dez 2004 · letzter Beitrag vom 8. Apr 2021
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#1

Webcam in Delphi?

  Alt 10. Dez 2004, 20:07
Ich würde gerne in meinem Programm ein livebild meiner Webcam anzeigen und bei Bedarf ein "Foto" schießen!
Der einzige hinweis, den ich hier in der DP gesehen habe ist das DS-Pack, allerdings lässt es sich bei mir nicht installieren (kann aber auch daran liegen, dass ich zu doof dazu bin. Wie muss ich das den Installieren?)!
Gibt es da noch eine Alternative zum DSPack? Am liebsten wäre mir auch eine Komponente, damit das ganze nicht zu kompliziert wird!
Vielen Dank
Nicolai
  Mit Zitat antworten Zitat
MiniKeks
(Gast)

n/a Beiträge
 
#2

Re: Webcam in Delphi?

  Alt 10. Dez 2004, 20:16
http://tscap32.sourceforge.net/

Sowas?
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Webcam in Delphi?

  Alt 10. Dez 2004, 20:17
Du brauchst das DSPack gar nicht.
Ich habs nach einer im Forum des SDC geposteten Lösung gemacht, und es funktioniert.

Delphi-Quellcode:
//Zuerst brauchst du folgende Konstanten
const
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_EDIT_COPY = WM_USER + 30;
  WM_CAP_SET_PREVIEW = WM_USER + 50;
  WM_CAP_SET_OVERLAY = WM_USER + 51;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;

implementation

{$R *.dfm}

//Dann brauchst du noch das hier
function capCreateCaptureWindow(lpszWindowName: LPCSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLLname 'capCreateCaptureWindowA';

procedure TForm1.LaberLaber; //halt irgendne Prozedur, ich habs im Formcreate, damit ich gleich was seh ^^
var handle:THandle;
begin
  handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 320, 240, Panel1.Handle, 1); //Wie du siehst, brauchst du ein Panel in diesem Beispiel ;-)
  SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 30, 0);
  sendMessage(handle, WM_CAP_SET_OVERLAY, 1, 0);
  SendMessage(handle, wm_cap_set_preview, 1, 0);
end;

Getestet hab ich den Code mit meiner Eyetoy-Kamera mit modifizierten treibern, sollte aber mit jeder anderen Webcam auch funktionieren
Julian J. Pracht
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Webcam in Delphi?

  Alt 10. Dez 2004, 20:19
Zitat von MiniKeks:
http://tscap32.sourceforge.net/

Sowas?
Ja

@Ultimator:
Danke, aber muss man irgendwo noch die "Inputgröße" der Kamra einstellen?
Bleiben die Konstanten immer gleich oder muss ich die für meine Bedürfnisse ändern?
Wie mache ich damit ein Foto?
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Webcam in Delphi?

  Alt 10. Dez 2004, 20:31
Also, in dem Beitrag im o.g. Forum hat er noch den Code für ein Bildschirmfoto gepostet, aber den hab ich nicht getestet

Delphi-Quellcode:
procedure TForm1.ButtonCamFoClick(Sender:TObkect);
begin
SendMessage( handle, WM_CAP_EDIT_COPY, 1, 0 );
Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
end;
Dan müsstest du halt die im oben genannten Code vereinbarte Variable handle global oder so machen, um darauf zugreifen zu können.

Joa, die Konstanten der Funktion capCreateCaptureWindow müssen gleich bleiben;
in diesem Codeblock
Delphi-Quellcode:
handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0, 0, 320, 240, Panel1.Handle, 1);
SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0);
SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 30, 0);
sendMessage(handle, WM_CAP_SET_OVERLAY, 1, 0);
SendMessage(handle, wm_cap_set_preview, 1, 0);
kannst/darfst du lediglich das 'Video' in handle:= capCreateWindow(bla); ändern.
Die Konstanten WM_CAP_DRIVER_CONNECT, WM_CAP_SET_PREVIEWRATE, WM_CAP_SET_OVERLAY und wm_cap_set_preview müssen denke ich so bleiben. Kannst ja n bissl mit den Parametern rumspielen

Das dürfte erstmal alles sein
Julian J. Pracht
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Webcam in Delphi?

  Alt 10. Dez 2004, 22:20
Gibt es noch die Möglichkeit einen Weißabgleich und die Helligkeit manuell einzustellen?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Webcam in Delphi?

  Alt 10. Dez 2004, 22:28
Vieleicht hilft dir auch noch dieser Thread
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: Webcam in Delphi?

  Alt 10. Dez 2004, 22:29
Hi Ulti,

ich habe diesen Code ausprobiert:
Delphi-Quellcode:
procedure TForm1.ButtonCamFoClick(Sender:TObkect);
begin
SendMessage( handle, WM_CAP_EDIT_COPY, 1, 0 );
Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
end;
und er funktioniert soweit auch gut

Allerdings wird das Bild in die Zwischenablage kopiert, was ich definitiv verhindern möchte. Gibt es eine Möglichkeit dies zu umgehn bzw. den ursprünglichen Zustand des Clipboards zu sichern und anschließend wieder herzustellen?

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Webcam in Delphi?

  Alt 10. Dez 2004, 22:37
Zitat von alcaeus:
und er funktioniert soweit auch gut
Bei mir nimmt er dieses GetAsHandle nicht! Was kann ich tun?
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Webcam in Delphi?

  Alt 10. Dez 2004, 22:52
@Nicolai: Hast du die Unit ClipBrd eingebunden?

@Den Rest
Es gibt anscheinend auch die Möglichkeit, das ganze per API-Funktionen zu erledigen, anstatt per Messages.
Beispiel:
Delphi-Quellcode:
SendMessage( handle, WM_CAP_EDIT_COPY, 1, 0 ); //Das wäre jetzt per Message
capEditCopy(handle); //Müsste theoretisch auch gehen, macht das gleiche (erzählt mir zumindest das WinAPI-SDK :-)
Allerdings mosert da Delphi, dass capEditCopy ein undefinierter Bezeichner sei.
Weiß jemand, welche Unit da noch einzubinden ist?
Dann müsste man nämlich nicht diese ganzen Konstanten oben definieren, von denen ich nicht weiß, wie sie zustande kommen

Zum Thema Bild in die Zwischenablage hab ich hier noch ein paar messages gefunden:
WM_CAP_FILE_SAVEDIB ("The WM_CAP_FILE_SAVEDIB message copies the current frame to a DIB file.")
WM_CAP_FILE_SAVEAS ("The WM_CAP_FILE_SAVEAS message copies the contents of the capture file to another file.")
WM_CAP_FILE_SET_CAPTURE_FILE ("The WM_CAP_FILE_SET_CAPTURE_FILE message names the file used for video capture.")
WM_CAP_FILE_ALLOCATE ("The WM_CAP_FILE_ALLOCATE message creates (preallocates) a capture file of a specified size.")


Und nun noch zum Thema Benutzereinstellungen wegen Kostrast und so:
WM_CAP_DLG_VIDEODISPLAY ("The WM_CAP_DLG_VIDEODISPLAY message displays a dialog box in which the user can set or adjust the video output. This dialog box might contain controls that affect the hue, contrast, and brightness of the displayed image, as well as key color alignment.")

Und bei jeder dieser Messages steht hinter dem kurzen Beschreibungstext " You can send this message explicitly or by using the [Messagename ohne Unterstriche und vorangestelltes WM] macro."

So, ich hoffe, ich konnte einigermaßen helfen
Julian J. Pracht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


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 22:47 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