AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Bewegungsmelder Webcam DsPack FilterGraph
Thema durchsuchen
Ansicht
Themen-Optionen

Bewegungsmelder Webcam DsPack FilterGraph

Ein Thema von Perlsau · begonnen am 9. Sep 2011 · letzter Beitrag vom 9. Sep 2011
 
Perlsau
(Gast)

n/a Beiträge
 
#1

Bewegungsmelder Webcam DsPack FilterGraph

  Alt 9. Sep 2011, 14:05
Hallo DelphiPraxler,

zwei Tage lang hab ich ausgiebig recherchiert, nun konnte ich die ersten Erfolge erzielen: Die Grundfunktionen eines Bewegungsmelders sind niedergeschrieben. Doch, ach, weitere Probleme sind in Sicht.

Der Treiber meiner beiden Webcams – einmal MiniDV-Kamera und eine Terratec TerraCam USB stellen mehrere Auflösungen zur Verfügung. Beim Start ist bei beiden standardmäßig 360*240 ausgewählt. Damit funktioniert mein Programm bestens, obwohl ich für jede Kamera andere Schwellenwerte einstellen muß. Ebenso kann ich ohne Probleme die anderen Auflösungen wählen wie z.B. 640*480. Doch sobald ich mit einer anderen als der urpsrünglichen Auflösung von 360*240 überwachen will, erhalte ich eine Schutzverletzungen, sobald der Detektor anspringt.

Der komplette Quellcode wäre meines Erachtens zu lang für die Darstellung im Forum, deshalb hab ich ihn auf einer meiner Homepages plaziert: Bewegungsmelder-Sourcecode

Zum Ausprobieren in der eigenen IDE sind die Jedi-Komponenten und das DS-Pack erforderlich. Man kann aber auch die beiden Jedi-Komponenten TJvTrackBar und TJvStatusbar mit den herkömmlichen Kompos ersetzen.

Vielleicht bekommt ein Interessierter heraus, wo die Schutzverletzung ausgelöst wird, mir ist das bislang nicht gelungen.

Code zum Bildvergleich:

Delphi-Quellcode:
{******************************************************************************************************************
*** BILDVERGLEICH 2 TRUE bedeutet BILDER SIND GLEICH (CompareImagesShmia)                                      ***
******************************************************************************************************************}

FUNCTION TFormCapture.Bildvergleich2(Bild1, Bild2 : TBitmap): Boolean;
CONST
     Mask : Cardinal = $FFFFFFFF;
VAR
   Maske : Cardinal;
   Fehler,
   x, y : Integer;
   P1, P2 : PByte;

BEGIN
     Fehler := 0;
     Maske := Mask DIV Track_Color.Max * Track_Color.Position;
     Label_Maske.Caption := IntToStr(Maske);

     Bild1 := GreyBitmap(Bild1);
     Bild2 := GreyBitmap(Bild2);

     Bild1.PixelFormat := pf24bit;
     Bild2.PixelFormat := pf24bit;

     FOR y := 0 to Bild1.Height -1 DO
     BEGIN
          P1 := Bild1.ScanLine[y];
          P2 := Bild2.ScanLine[y];

          FOR x := Bild1.Width-1 DownTo 0 DO
          BEGIN
               IF (PInteger(P1)^ AND Maske) <> (PInteger(P2)^ AND Maske) THEN
               INC(Fehler);
               INC(P1, 3);
               INC(P2, 3);
               Application.ProcessMessages;
          END;
     END;

     IF Fehler > (UpDown_Sensi.Position * 10) THEN
     Result := FALSE ELSE
     Result := TRUE;
END;
Angehängte Grafiken
Dateityp: jpg Bewegungsmelder.jpg (72,6 KB, 35x aufgerufen)
  Mit Zitat antworten Zitat
 

 

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 19:46 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