Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Von Web-Kamera Bild speichern (https://www.delphipraxis.net/107608-von-web-kamera-bild-speichern.html)

SaFu 30. Jan 2008 16:13


Von Web-Kamera Bild speichern
 
Gude abend

Unzwar habe ich mal folgende Frage.

Ich möchte gerne mit einer Web-Kamera Portrait aufnahmen machen. z.B für eine Angestellten Datenbank. Das man dem jeweiligen Angestellten ein Foto zuweisen kann.

Wie stelle ich das an??

Ich schließe meine Kamera an (USB).

So weiter wie mache ich das am besten.

Mit einem Image für das Foto und einem Button der das ganze auslöst?

Ich habe keine Ahnung

Gruss Sascha

Aurelius 30. Jan 2008 16:17

Re: Von Web-Kamera Bild speichern
 
Such mal in der CodeLib, imho gibts dort einen Eintrag für dein Problem.

DP-Maintenance 30. Jan 2008 16:25

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Sonstige Fragen zu Delphi" nach "Multimedia" verschoben.
Das passt hier besser.

SaFu 31. Jan 2008 12:20

Re: Von Web-Kamera Bild speichern
 
Ok ich habe habe jetzt was gefunden

wo bekomme ich das handle her ? oder wie macht man das?

Delphi-Quellcode:
Die zweite Möglichkeit über capFileSaveDIB:
Format: JPEG
Delphi-Quellcode: markieren
function SaveWebcamPictureDIB(pFileName: PChar;WebcamHandle: THandle):Boolean;
const WM_CAP_FILE_SAVEDIB = WM_USER + 25;
begin
if IsWindow(WebcamHandle) then
  result := (SendMessage(WebcamHandle,WM_CAP_FILE_SAVEDIB,0,LPARAM(pFileName)) <> 0)
else
  result := false;
end;
 

Beispielaufruf:
Delphi-Quellcode: markieren
procedure TForm1.Button1Click(Sender: TObject);
begin
//VideoHandle = Zurückgegebenes Handle bei der Initialisierung
SaveWebcamPictureDIB(PChar('C:\test.jpg'),VideoHandle);
end;

SaFu 31. Jan 2008 17:19

Re: Von Web-Kamera Bild speichern
 
Ich habe jetzt mal was anderes im Forum gefunden, was anscheinend auch schon einige benutzt haben.

Das Projekt war auch als Zip dabei, wen ich die bereits kompallierte .exe benutze Funzt das mit meiner Cam.

Wenn ich versuche das Projekt selber zu kompalieren bekomm ich einen Fehler, woran könnte das liegen (Fehler angehängt).

Fehlerzeile im Code makiert

Delphi-Quellcode:
unit Unit3;

interface

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

type
  TForm3 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;
  VHandle : THandle;
const
WM_CAP_DRIVER_CONNECT = WM_USER + 10;
WM_CAP_DRIVER_DISCONNECT = WM_USER + 11;
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}
function capCreateCaptureWindow(lpszWindowName: LPCSTR;
dwStyle: DWORD;
x, y,
nWidth,
nHeight: integer;
hwndParent: HWND;
nID: integer): HWND; stdcall;
external 'AVICAP32.DLL' name 'capCreateCaptureWindowA';

procedure TForm3.Button1Click(Sender: TObject);
begin
//Bild in Zwischenablage kopieren
SendMessage(Vhandle, WM_CAP_EDIT_COPY, 1, 0 );
Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SendMessage(Vhandle, WM_CAP_DRIVER_DISCONNECT, 0, 0);
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
Vhandle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
0, 320, 240, Panel1.Handle, 1);
SendMessage(Vhandle, WM_CAP_DRIVER_CONNECT, 0, 0);         //<----------Fehler
SendMessage(Vhandle, WM_CAP_SET_PREVIEWRATE, 30, 0);       //<----------Fehler
sendMessage(Vhandle, WM_CAP_SET_OVERLAY, 1, 0);
SendMessage(Vhandle, wm_cap_set_preview, 1, 0);
Image1.Picture.Bitmap.PixelFormat := pf24Bit;
end;

Rolf Rostig 31. Jan 2008 18:56

Re: Von Web-Kamera Bild speichern
 
Hallo,

bei mir funktioniert der Code (D7).

rollstuhlfahrer 31. Jan 2008 20:34

Re: Von Web-Kamera Bild speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
was ich demletzt (was heißt demletzt - 3 Monate) gesehen habe ist die Einbindung einer beliebigen PC-Kamera mit der Bildübertragung an ein TImage. Grundlage dafür ist Direct3D / DirectX. Bie Grundbibliothek heißt Cloothy (bin mir nicht ganz sicher, falls ich bemerk, dass das anders heißt wird sofort verbessert) und hier irgendwo im Forum liegt so eine Anwendung rum. Man muss nur noch das Image zum richtigen Zeitpunkt speichern...


rollstuhlfahrer

PS anbei eine Testanwendung mit den entsprechenden Units. ist schon etwas älter, desshalb weiß ich nimmer wo ich sie her hab...

SaFu 31. Jan 2008 21:44

Re: Von Web-Kamera Bild speichern
 
Das ist eine ganz schöne Anwendung nur soviel brauch ich garnicht.

Nur Bild speichern.


Zitat:

Zitat von Rolf Rostig
Hallo,

bei mir funktioniert der Code (D7).

Wie gesagt die .exe geht beim mir auch, nur ich kann die .dpr nicht kompalieren. D2007

SaFu 1. Feb 2008 18:10

Re: Von Web-Kamera Bild speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hänge hier nochmal das Projekt an was ich gefunden habe.

Wie gesagt beim Kompalieren des Projektes bekomme ich einen Fehler.
Wenn ich dann auf fortfahren klicke. Kompaliert Delphi das Projekt und ich sehe kein Bild nur Schwarz.

Wenn ich jetzt aber die Kopalierte exe ausführe sehe ich das Webcam bild auf dem Panel und ich kann auch ein Foto machen.

Woran liegt das


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz