Autor Beitrag
kai_lamers
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Di 11.09.07 15:29 
Titel: Webcam
Hey,

das wäre unheimlich lieb - das wird mir sicherlich helfen!

Kai
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Di 11.09.07 16:49 
user profile iconkai_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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 19.09.07 16:52 
vielleicht solltest du auf Suche in: Delphi-Forum, Delphi-Library TPAINTBOX umsteigen. Das Bild speicherst du dann in ein Suche in: Delphi-Forum, Delphi-Library TBITMAP und zeichnest es in der OnPaint Routine der TPaintbox mittels Suche in: Delphi-Forum, Delphi-Library BITBLT.


mfg
Matthias
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 121



BeitragVerfasst: 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



BeitragVerfasst: 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...

ausblenden 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 user profile iconKlabautermann: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 04.10.07 12:33 
Moin und :welcome: 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.