AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Videoanalyse (ähnlich wie Lichtschranke)
Thema durchsuchen
Ansicht
Themen-Optionen

Videoanalyse (ähnlich wie Lichtschranke)

Ein Thema von Ilmug3 · begonnen am 19. Dez 2015 · letzter Beitrag vom 4. Jan 2016
Antwort Antwort
hathor
(Gast)

n/a Beiträge
 
#1

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 19. Dez 2015, 19:40
Wenn die Bildfrequenz 50Hz ist, muss man nur alle 20 msec eine Analyse durchführen.

Geändert von hathor (19. Dez 2015 um 21:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.677 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 19. Dez 2015, 20:04
Wenn die Bildfrequenz 50Hz ist, muss man nur alle 20 sec eine Analyse durchführen.
????

50 Hz sind 50 Bilder pro Sekunde, man muss also all 20 Millisekunden eine Bildanalyse durchfuehren.
Thomas Mueller
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#3

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 19. Dez 2015, 21:24
Da war ein m verlorengegangen.
Übrigens:
Bei Dir ist ein e verlorengegangen.
  Mit Zitat antworten Zitat
Ilmug3

Registriert seit: 19. Apr 2015
7 Beiträge
 
#4

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 19. Dez 2015, 22:29
Danke für den Hinweis.
Erste Versuche habe ich jetzt schon gemacht.
Bildvergleich mit Scanline gibt gute Ergebnisse. Danke für den Tipp.
Meine Überlegung war weiterhin, einen kleinen Ausschnitt (30*30 Pixel) vom Desktop in die Anwendung zu kopieren
und dort mit dem hinterlegten Bild des Ausschnitts ohne Auto zu vergleichen.

Ich habe mich aus Faulheit für den Desktop entschieden. Dann muss ich mich nicht mit irgend welchen Videosstreams in Delphi rumschlagen,
sondern lasse den Stream im Browser anzeigen und kopiere es von dort in die Delphianwendung. Verschieben, darf man dann das Browserfenster natürlich nicht mehr.

Bedient habe ich mich bei diesen Codezeilen
_______________________________________
function GetScreenShot: TBitmap;
var
Desktop: HDC;
begin
Result := TBitmap.Create;
Desktop := GetDC(0);
try
try
Result.PixelFormat := pf32bit;
Result.Width := Screen.Width;
Result.Height := Screen.Height;
BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, Desktop, 0, 0, SRCCOPY);
Result.Modified := True;
finally
ReleaseDC(0, Desktop);
end;
except
Result.Free;
Result := nil;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Bitmap := GetScreenShot;
end;
_______________________________

Leider scheint die Prozedur denn Speicher nicht ordentlich aufzuräumen,
denn nach einigen Sekunden (Scannrate 100ms) gehen mir die Ressourcen aus.
Die Probleme tauchen immer dort auf, wo man sie nicht vermutet
Ich muss vielleicht noch etwas mit FreeAndNil arbeiten.
Das werde ich morgen testen.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 20. Dez 2015, 04:26
Leider scheint die Prozedur denn Speicher nicht ordentlich aufzuräumen,
denn nach einigen Sekunden (Scannrate 100ms) gehen mir die Ressourcen aus.
Das ist einer der fiesen Fälle, wo eine Funktion eine Instanz als Result zurück gibt. Es gibt hier in der DP ein paar Diskussionen dazu, die sich damit befassen wer denn in so einem Fall nun für das Aufräumen dieser Instanz zuständig ist. Um den Code von GetScreenShot() nicht anfassen zu müssen, schlage ich folgende Lösung vor:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  bmp: TBitmap;
begin
  bmp := GetScreenShot;
  if Assigned(bmp) then
  begin
    try
      Image1.Picture.Bitmap.Assign(bmp);
    finally
      bmp.Free;
    end;
  end;
end;
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Ilmug3

Registriert seit: 19. Apr 2015
7 Beiträge
 
#7

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 20. Dez 2015, 08:44
Danke Medium.
Du hast meinen Sonntag gerettet.
Das Aufräumen mit deinen Code funktioniert hervorragend.
Der Rest ist jetzt noch die übliche Fleißarbeit (hoffe und befürchte ich).

Beim nächsten unvorhergesehenen Problem melde ich mich
  Mit Zitat antworten Zitat
Ilmug3

Registriert seit: 19. Apr 2015
7 Beiträge
 
#8

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 22. Dez 2015, 12:42
Tja - so einfach wie Hänschen sich das vorstellt, ist es nicht.

Wenn das ganze auf dem Desktop läuft, sieht es wunderbar aus.
Da ist ja auch die Anzeige statisch und der Unterschied zwischen dem Referenzbild und dem beobachteten Bild ist bei 0%. Wenn sich etwas bewegt, schnellt der Wert sofort auf 50-100%.

Bei der Betrachtung eines Streams der Webcam hab ich schon im Normalfall eine Differenz bei 50-60% der Pixel (Bildrauschen). Wenn sich dann etwas durch den Erfassungsbereich bewegt, steigt der Wert um gerade mal 2-3%.

Schlimmer noch ist die grottige Framerate der Webcam. Schnelle Objekte springen manchmal direkt über den Erfassungsbereich hinweg ohne eine Reaktion auszulösen.
Ich glaube, ich gehe nochmals in die Planungsphase.

Aber Danke für die Tipps.
Dazugelernt habe ich in jedem Fall.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 05:02 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