| Autor |
Beitrag |
kai_lamers
      
Beiträge: 24
|
Verfasst: Mi 05.09.07 21:11
Hey,
für ein Projekt im Physik LK mit dem Thema "Physik und Computer" benötigen wir noch ein bisschen Hilfe.
Wir haben uns als Hauptaufgabe gemacht: "Vergleich zwischen Simulation und Realität - was leisten Physik Engines wirklich?".
Der Part der Simulation stellt kein Thema dar, da wir allerdings beides anschaulich vergleichen wollen, müssen wir die Realität in den Rechner "übertragen".
Dies wollen wir mithilfe eines kleinen Motion Capturing Verfahrens mit 2 Webcams, die alle 3 Dimensionen betrachten machen.
Es soll eine Art Farberkennung geben - das Objekt, welches der Physik vor den "Augen" der Webcams folgt, wird rot sein - der Hintergrund weiß.
Die Webcam Daten werden mithilfe der AVICAP32.DLL (CapCreateCaptureWindowA) an ein Panel übertragen.
Nun brauchen wir jedoch einen Hinweis, wie wir am Besten bei der Farbsuche vorgehen, entsprechend Koordinaten erhalten und vorallem das Webcam Bild analysieren können.
Dies ist vorerst unser großes Problem, welches unser Projekt grad ein bisschen hinken lässt - das ganze muss am 21.9. vorgetragen werden, entsprechend müssen wir einen Live-Stream der Cams verarbeiten, um das ganze zu veranschaulichen.
Ein Video reicht da also nicht aus.
Vielen Dank Euch bereits jetzt!
Kai
|
|
kai_lamers 
      
Beiträge: 24
|
Verfasst: Do 06.09.07 17:57
Titel: Soweit so gut.
Hey,
ich habe nun alles soweit doch alleine hinbekommen, allerdings funktioniert mein Vorgehen nur mit schwarzweiß Bildern mit möglichst hohem Kontrast zuverlässig.
Das Bild wird per CapCreateCaptureWindowA aus der Acicap32.dll als Handle an ein Panel übergeben. Welche Nachricht muss versenden, damit ich keine farbigen, sondern schwarzweiß Bilder im Panel erhalte?
Vielen Dank,
Kai
|
|
kai_lamers 
      
Beiträge: 24
|
Verfasst: Di 11.09.07 15:01
Huhu,
die Projektwoche beginnt nun am Montag schon - kann, oder will mir einfach keiner helfen?
Danke,
Kai
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Di 11.09.07 15:26
Hallo,
ich habe selbst schon div. Webcamprogramme geschrieben, allerdings sind diese afaik nicht auf die AviCap32.dll gestützt! Ich kann dir aber mal ein Programm, evtl. auch Quelltext, schicken das dir helfen kann!
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
kai_lamers 
      
Beiträge: 24
|
Verfasst: Di 11.09.07 15:29
Titel: Webcam
Hey,
das wäre unheimlich lieb - das wird mir sicherlich helfen!
Kai
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Di 11.09.07 16:49
kai_lamers hat folgendes geschrieben: | Es soll eine Art Farberkennung geben - das Objekt, welches der Physik vor den "Augen" der Webcams folgt, wird rot sein - der Hintergrund weiß.
...]
Nun brauchen wir jedoch einen Hinweis, wie wir am Besten bei der Farbsuche vorgehen, entsprechend Koordinaten erhalten und vorallem das Webcam Bild analysieren können.
|
Das ist eigentlich ziemlich einfach. Du musst praktisch nur das Bild als Bitmap in den Speicher laden, dann per Scanline jeden Pixel durchgehen und anhand der Farbe entscheiden, ob der Pixel rot, oder weiß ist. Dazu solltest du hier im Forum genügend Code finden.
|
|
kai_lamers 
      
Beiträge: 24
|
Verfasst: Mi 19.09.07 08:22
Titel: Es geht...
Hey,
soweit läuft das Projekt nun, dass die Bilderkennung ordentlich funktioniert - nun gibt es nur noch ein Problem:
Die Performance.
Wie kann ich die Bilder der Webcam an das TImage übertragen, ohne die rel. langsame Zwischenablage von Windows zu nutzen?
Das macht meiner Meinung nach den Hauptteil der Performanceprobleme aus.
Fällt Euch da eine gescheitere Lösung ein?
Wenn ich auch das Problem noch gelöst habe, werde ich den Quellcode hier mal posten. Muss ihn auch noch kommentieren.
Vielen dank und lieben Gruß,
Kai
|
|
F34r0fTh3D4rk
      
Beiträge: 5285
Erhaltene Danke: 29
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 19.09.07 16:52
vielleicht solltest du auf TPAINTBOX umsteigen. Das Bild speicherst du dann in ein TBITMAP und zeichnest es in der OnPaint Routine der TPaintbox mittels BITBLT.
mfg
|
|
Matthias
      
Beiträge: 121
|
Verfasst: Mi 19.09.07 20:09
Hallo,
ich verwende zur Bildaufnahme die Komponente Videocap von J. Huebler. Dort gibt es die Möglichkeit
Bilder der Webcam direkt in eine Bitmap zu kopieren.
In der Bildverarbeitung werden of nur einzelne Farbebenen ausgewertet (geht auch viel schneller).
Wenn Du ein rotes Objekt suchen möchtes, nimm für einen maximalen Kontrast die Komplimentärfarbe
(hier grün).
Matthias
|
|
mik79
Hält's aus hier
Beiträge: 3
|
Verfasst: Do 04.10.07 11:09
Hallo,
ich habe ein ganz ähnliches Problem. Ich habe mir mal die empfohlene Komponente angeguckt und muss sagen das sieht übersichtlicher aus, als direkt den treiber anzusteuern
jetzt habe ich nur das problem, dass ich nicht raus bekomme, wie ich ein webcam bild in ein tbitmap bekomme...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TMainForm.VideoCap1VideoStream(sender: TObject; lpVhdr: PVIDEOHDR);
begin FrameToBitmap(bild,lpVhdr^.lpData,bminf);
end; |
das hier ist mein versuch, der leider abstürzt wenn ich videocap1.StartCapture; setzt...
videoformat steht auf rgb 24.
habt ihr einen tip für mich?
ich bin für jede antwort dankbar
Michael
Edit:
So, das problem hab ich schonmal gelöst... man sollte sein bitmap auch mal createn und ein pixelformat zuweisen
nun zu meinem nächsten problem..
kann man das bitmap auch ohne startcapture abgreifen? ich will ja kein video aufnehmen sondern nur mit dem bitmap weiterarbeiten...
PS: Danke für das edit, hab ich irgendwie vergessen
Moderiert von Klabautermann: Delphi-Tags hinzugefügt
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 04.10.07 12:33
Moin und  im Forum!
bitte erstelle für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt.  Daher:
*geschlossen*
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.
Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.
|
|