AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte WebCam mit DirectShow

WebCam mit DirectShow

Ein Thema von grizzly · begonnen am 5. Jun 2006 · letzter Beitrag vom 24. Mai 2014
Antwort Antwort
Seite 1 von 3  1 23   
grizzly
Registriert seit: 10. Dez 2004
VSampleDemo

Es gibt Beispiele zu Hauf, wie man WebCams mittels Video for Windows (VfW) anspricht. Wie das Ganze mit DirectX funktioniert ist schon weit weniger gut dokumentiert. Mittlerweile gibt es dafür Lösung in DSPack und der Komponente TVideoSample von Egor Averchenkov (ich hab's allerdings nicht ausprobiert).
Trotzdem stelle ich hier mal meinen Port der Microsoft DirectX 9.0 SDK Update (Summer 2003) Beispiele PlayCap und PlayCapMoniker vor.

Im Anhang findet ihr einen Screenshot (Version 2.1) und den Source der Demo-Applikation (Version 3.1).
Link zu Screenshot, Binary und Source auf meiner Homepage: VSampleDemo.

Der Aufbau der Demo-Applikation ist grob wie folgt:
- VSample.pas greift auf die Webcams zu. Diese Unit ist der eigentliche Port der Microsoft C++ Beispiele.
- VFrame.pas erlaubt einen vereinfachten Zugriff auf VSample, inklusive einer "NewVideoImage"-Event Methode
- Frame_Video.pas bietet eine (häßliche!) Oberfläche zur Steuerung (Start/Stop/Anzeige), gekapselt in ein TFrame (unglückliche Namensähnlichkeit)
- MainForm beinhaltet zwei der Frames aus Frame_Video.pas, damit gleichzeitig zwei laufende Videos angezeigt werden können.

History:

Version 3.2
09.07.2012
- Support für 8-Bit Graustufenbilder. Statt RGB Bilder nachträglich in Graustufen umzurechnen, kann man nun direkt 8-bit Graustufenbilder abfragen (Property Gray8bit). Bringt aber nur bei Codecs wie YUY2 Zeitersparnis, bei RGB kostet es Zeit!
- Liste der unterstützten Videoauflösungen korrigiert. Bisher stand da jeder Eintrag doppelt.
- Kleinere Speicherlöcher geflickt.

Version 3.1
06.05.2012
Kleinere Korrekturen und Anpassungen:
- YUY2 nimmt nun Rücksicht auf Microsofts LifeCam Cinema (Die schickt im 1280*720 Video mode 33% mehr Daten als nötig)
- MJPEG Dekompression mit GDI+. Das ist etwas schneller als das in Delphi mitgelieferte JPEG.
- Die Bild-Spiegelung in der Demo3 führte auf meinem etwas neueren Win7 64bit zum Crash. Habe die Methode jetzt geändert.

Version 3.0
23.08.2009
- Unterstützung anderer Videoformate (nicht nur RGB):
° YUY2 (YUYV, YUNV)
° MJPG
° I420 (YV12, IYUV)
- Direkte Ansteuerung der Video-Eigenschaften
- Überwachungs-Modus "Surveillance". Schreibt JPG Dateien in ein "Spy" Unterverzeichnis. ACHTUNG! Laßt euch nicht die Festplatte volllaufen!


Version 2.1
30.08.2008
- Neuere DirectX Header und Jedi.inc-Datei
(Damit sollte der Code mit Delphi >7 kompilierbar sein)
- Rudimentäre Echtzeit-Video-Bildverarbeitung:
° Invertieren
° Umwandlung in Graustufen
° Hervorhebung der Änderungen zum vorherigen Video-Frame
- Pause/Resume
- Update der Kameraliste mittels Popup möglich
- Kameras werden über ihren Index innerhalb der Kameraliste und nicht mehr über den Namen gestartet.
(Dies sollte die Verwendung zweier Kameras mit gleichem Namen ermöglichen)


Version 2.0
27.07.2008
- Callback Bug beseitigt.
- DirectX Dateien mit im Archiv (spart den separaten Download)


Version 1.0
05.06.2006
- Initial version


Da VSampleDemo mittlerweile arg unübersichtlich geworden ist, habe ich noch drei ganz simple Demos zur Verwendung von VSample.pas und VFrame.pas gestrickt. Source-Codes findet ihr ebenfalls im Anhang.


Gruß
Michael
Miniaturansicht angehängter Grafiken
vsampledemo21_screenshot_814.jpg  
Angehängte Dateien
Dateityp: zip vsampledemo_32_source.zip (430,3 KB, 437x aufgerufen)
Dateityp: zip simpledemos_32_source.zip (440,0 KB, 371x aufgerufen)

Geändert von grizzly ( 9. Jul 2012 um 21:01 Uhr) Grund: Update auf 3.2
 
taktaky
 
#2
  Alt 12. Sep 2007, 23:25
Hi
[Fatal Error] VSample.pas(30): File not found: 'DirectShow9.dcu' !!!
  Mit Zitat antworten Zitat
Nuclear-Ping
 
#3
  Alt 13. Sep 2007, 06:05
[Fatal Error] Taktaky.brain(30): Google not found: 'DirectShow9.pas' !!!
  Mit Zitat antworten Zitat
Mokuba01

 
Delphi XE2 Professional
 
#4
  Alt 24. Nov 2007, 22:06
Zitat von taktaky:
Hi
[Fatal Error] VSample.pas(30): File not found: 'DirectShow9.dcu' !!!
Zitat von Delphi 6 Professional:
[Fataler Fehler] VSample.pas(30): Datei nicht gefunden: 'DirectShow9.dcu'
dem kann ich mir nur anschließen
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#5
  Alt 24. Nov 2007, 22:10
Delphi + DirectX = Clootie
Markus Kinzler
  Mit Zitat antworten Zitat
grizzly

 
Delphi XE4 Professional
 
#6
  Alt 27. Jul 2008, 16:21
Hab kleine Korrekturen vorgenommen und die Demo-Applikation überarbeitet.
Siehe ersten Post.
Die benötigten DirectX Header Dateien sind nun beim Sourcecode mit abgelegt.
(Mit DSPack o.a. seid ihr aber nach wie vor besser bedient )


Gruß
Michael
  Mit Zitat antworten Zitat
wazup

 
Delphi 2007 Professional
 
#7
  Alt 30. Aug 2008, 11:52
Ich bekomme Fehler beim Compilieren in der Unit DirectDraw.pas:
Code:
[DCC Error] DirectDraw.pas(359): E2154 Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[DCC Error] DirectDraw.pas(366): E2154 Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[DCC Error] DirectDraw.pas(376): E2154 Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[DCC Error] DirectDraw.pas(383): E2154 Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[DCC Error] DirectDraw.pas(395): E2154 Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[DCC Error] DirectDraw.pas(835): E2154 Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[DCC Error] DirectDraw.pas(837): E2154 Type 'IDirectDrawSurface' needs finalization - not allowed in variant record
[DCC Error] DirectShow9.pas(149): F2063 Could not compile used unit 'DirectX\DirectDraw.pas'
  Mit Zitat antworten Zitat
grizzly

 
Delphi XE4 Professional
 
#8
  Alt 30. Aug 2008, 15:45
Tatsächlich, mit Turbo Delphi (=2006) erhalte ich denselben Fehler.

Die Ursache ist simpel:
Die DirectX Sourcen im Archiv sind etwas alt. Das beigelegte Jedi.inc kennt keine Compiler neuer als Delphi 7. Und deshalb wird die Compilerdirective COMPILER5_UP nicht definiert.

Bei mir hat es gereicht, in der Datei DirectDraw.pas in die Zeile 72 (gleich nach "{$I DirectX.inc}") ein "{$DEFINE COMPILER5_UP}" einzufügen, und schon konnte ich kompilieren:

Delphi-Quellcode:

unit DirectDraw;

interface

{$I DirectX.inc}

{$DEFINE COMPILER5_UP}  // <= Das hier mal zu Testzwecken einbauen
Das ist zwar nicht schön, aber um zu gucken, ob das die Ursache war, reicht es allemal. Ein neues Jedi.inc wird schon aufzutreiben sein. Vielleicht komm' ich morgen dazu, das Archiv upzudaten...

Gruß
Michael

Edit: Neue Version 2.1 im ersten Post. Kompiliert bei mir mit Turbo-Delphi ohne Probleme.
  Mit Zitat antworten Zitat
grizzly

 
Delphi XE4 Professional
 
#9
  Alt 31. Aug 2008, 13:38
Neue Version 2.1 im ersten Post.

Hat nun nicht nur neue DirectX Header, damit es auch mit frischen Delphi-Versionen kompiliert, sondern auch ein paar kleine Beispiele zur Manipulation der Videobilder in Echtzeit:
- Invertieren
- Graustufen
- Differenzbilder (interessant für Leute, die die berüchtigte "Überwachungskamera" realisieren wollen.)


Gruß
Michael
  Mit Zitat antworten Zitat
rakekniven

 
Delphi XE5 Professional
 
#10
  Alt 29. Apr 2009, 10:25
Schönes Tool, dass hier mit zwei Logitech QuickCam E 3500 tadellos funktioniert.

Ein Hinweis noch:
Ich habe hier die beiden Cams mit 640 x 480 laufen und muss das Fenster vergrößern. Beim FormResize wird der Splitter nicht positioniert.

Interessen an einem Patch oder Ideenvorschlag?

Gruß
Frag google
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:36 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