Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit Speichern von Bild (https://www.delphipraxis.net/46659-problem-mit-speichern-von-bild.html)

Flips 29. Mai 2005 12:04


Problem mit Speichern von Bild
 
Hi.

Habe folgendes Problem.
Ich habe eine Funktion mit einer Webcam.
Diese lädt die Webcam Bilder in ein TImage.
Jetzt wollte ich dieses TImage per Timer jede Sekunde speichern lassen.
Folgender Code:
Delphi-Quellcode:
procedure GetCamPictures;
var handle:THandle;
begin
 handle := capCreateCaptureWindow( PChar('Webcam'),
              WS_CHILD or WS_VISIBLE, 0, 0,
              300, 300,
              Form1.Image1.Picture.Bitmap.Handle, 0);
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;


procedure TForm1.FormCreate(Sender: TObject);
begin
 GetCamPictures;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Form1.Image1.Picture.Bitmap.SaveToFile('C:\test.bmp');
end;
Er speichert mir zwar eine Datei, allerdings ist diese leer.
Kann mir jemand helfen es richtig zu machen?
MfG
Flips

turboPASCAL 29. Mai 2005 14:50

Re: Problem mit Speichern von Bild
 
Hi,

Du musst ein Panel verwenden.

Delphi-Quellcode:
handle := capCreateCaptureWindow( PChar('Webcam'),
              WS_CHILD or WS_VISIBLE, 0, 0,
              300, 300,
              Form1.Image1.Picture.Bitmap.Handle, 0);
Delphi-Quellcode:
handle := capCreateCaptureWindow('Webcam',
              WS_CHILD or WS_VISIBLE, 0, 0,
              300, 300,
              Form1.Panel1.Handle, 0);
Video Capture ? Forum ? Suche ? :gruebel:

Guckst Du hier: Webcam in Delphi? :thumb:

MfG.

Flips 29. Mai 2005 15:10

Re: Problem mit Speichern von Bild
 
hatt ich ja am anfang, nur das bild von einem Panel kann man schlecht abspeichern.
Ich kann auch es Handle von Form1 hohlen, aber mir gehts ja darum das ich bestimmte Frames des Webcamvideos speichern kann. aber da kommen irgendwie immer nur leere bitmaps raus:
test.bmp --- 0kb

Phistev 29. Mai 2005 15:21

Re: Problem mit Speichern von Bild
 
Zitat:

(TPicture.)Bitmap referenziert das Grafikobjekt, sofern es ein Bitmap enthält

Flips 29. Mai 2005 16:31

Re: Problem mit Speichern von Bild
 
Zitat:

Zitat von Phistev
(TPicture.)Bitmap referenziert das Grafikobjekt, sofern es ein Bitmap enthält

Und wie mach ich es richtig?

Ich meine selbst wenn ich als Anzeige kein Panel sondern ein Image nehme und das Handle wie folgt mache - Image1.Picture.Bitmap.Handle - und dann später per Timer Image1.Picture.Bitmap.SaveToFile('Bild.bmp'); mache dann klappt das nicht.

turboPASCAL 29. Mai 2005 20:38

Re: Problem mit Speichern von Bild
 
Liste der Anhänge anzeigen (Anzahl: 2)
So, hab Dir mal ein Demo gemacht, kannste abgucken was Du brauchst.
(eh ich das hier noch mal eintippe mit copy & paste) :mrgreen:

  • Alt: Version 1.00 - Es sind im Prog. keine Fehlerabfragen (betr. Video Capture) vorhanden.

    NEW: Version 1.01 - "Close Video Device" funktioniert jetzt, Capturetriberabfrage usw.

Für Schreibfehler ist der Erfinder der Rechtschreibung verantwortlich und nich ich
(habe manchmal meine eigene)!!! :zwinker:

Man kann es sicherlich auch anders machen aber...

MfG.

Flips 30. Mai 2005 13:24

Re: Problem mit Speichern von Bild
 
DANKE genau das wollte ich :thumb: :thumb: :thumb:
Un ich habs ned rausbekommen :wall:

:dancer2:

x000x 5. Nov 2005 17:26

Re: Problem mit Speichern von Bild
 
Moin moin,

Zitat:

Zitat von turboPASCAL
Man kann es sicherlich auch anders machen aber...

Wenn die Anwendung minimiert werden soll, bzw. hinter anderen Fenstern liegt MUSS man es anders machen.
(Jedenfalls wenn es ums speichern eines Frames geht.
Im Beispielsoucre wird nur die Zeichenfläche vom Videopanel kopiert, die aber bei verdecktem/minimiertem Fenster
nicht aktualisiert wird. Somit erhälst du nur Ausschnitte vom aktuellen Screen.)

einfacher ginge es so:
Delphi-Quellcode:
//..
// SendMessage(capHandle, WM_CAP_FILE_SAVEDIB, 0, LPARAM(PChar(Path + Format('Capture-%0.4d.bmp', [FileCounter]))));
capFileSaveDIB(capHandle, PChar(Path + Format('Capture-%0.4d.bmp', [FileCounter])));
//..


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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