Hallo Forum,
über den Beitrag zu Texturen laden bei OpenGL bin ich neugierig geworden und es kam mir eine Idee.
Kann man mit OpenGL auch verschiedene Einzelbilder zusammensetzten und erhält ein räumliches Objekt, oder nimmt man dafür OpenCV oder eine Mischung aus beiden?
Konkret:
Ich würde gerne Autos fotografieren (jeweils über die Diagonalen um jeweils eine Längs- und Querseite zu erhalten). Wenn man vier Bilder aufgenommen hat, kann man diese dann zusammenbauen
so dass sich ein räumliches Fahrzeug ergibt welches man drehen und bewegen kann?
Ziel wäre zwei Fahrzeuge gegeneinander zu Positionieren um Schadenkompatibilität zu überprüfen.
Irgendwo habe ich mal was über pixelgenaue Kollisionserkennung aufgeschnappt. Die Kontaktstelle könnte sich dann evtl. umfärben.
Geht so was? Hat sich von Euch schon mal jemand damit beschäftigt?
Gruß
Volker
OpenCV / OpenGL
-
- Beiträge: 363
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: OpenCV / OpenGL
Ich würde mal behaupten klar geht das. unter http://www.delphigl.com" onclick="window.open(this.href);return false; findest du einige Tutorils zu Thema Texturen.Kann man mit OpenGL auch verschiedene Einzelbilder zusammensetzten und erhält ein räumliches Objekt, oder nimmt man dafür OpenCV oder eine Mischung aus beiden?
Ich stelle es mir immer so vor: Ein Würfel hat ja verschiedene Seiten nun kann man jeder Seite eines Würfels eine eigene Textur geben. Du müsstest es auch hinbekommen, dass jede Textur aus unterschiedlichen Texturen besteht.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 363
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: OpenCV / OpenGL
Hallo pluto,
vermutlich wird es so gehen. Ich bin bekanntlich Anfänger und muss eigentlich erst mal klein anfangen. Das erste Delphi-Tutorial hat unter Delphi (mit dglOpenGL.pas) schon mal geklappt, unter Lazarus (Windows) noch nicht.
Auch hat unter Linux die Installation von OpenGL aus dem Package noch nicht funktioniert, klappte unter Windows prima. IDE-Kompilieren hat gestreikt. Fehlermeldung habe ich momentan nicht im Kopf. Wie funktioniert denn das TOpenGL-Control unter Lazarus? Genauso wie dglOpenGL? Im Lazarus Buch steht nix über OpenGL.
Durch googeln bin ich auf ein pdf gestoßen wie man einem Würfel ein Bild verpassen kann. Auch im OpenGL-Beispiel von Lazarus wird ein Bild zu einem Würfel zusammengesetzt.
Aber das trifft den Nagel noch nicht auf den Kopf. Ein Würfel hat immer noch gerade Kanten bzw. Flächen die rechtwinklig aufeinander stehen. Mein "Gedanke" war es das Auto aus Einzelbildern zusammenzubauen sodass ein räumliches Auto entsteht mit all seinen nicht geraden Konturen. Stoßfänger zum Besipiel, die ziehen sich ja Richtung Erdboden nach innen, oder auch Türen. Griffe, Zier- und Stoßleisten stehen ggf. hervor usw.
Hier einen Körper zu gewinnen der das alles Berücksichtigt scheint mir unmöglich. Zumal Bilder ja "nur" aus RGB bestehen. Ganz zu schweigen davon auch noch zwei von der Sorte gegeneinander zustellen und die Kontaktpunkte einzufärben...
Aber DANKE für Deine Antwort.
Gruß
Volker
vermutlich wird es so gehen. Ich bin bekanntlich Anfänger und muss eigentlich erst mal klein anfangen. Das erste Delphi-Tutorial hat unter Delphi (mit dglOpenGL.pas) schon mal geklappt, unter Lazarus (Windows) noch nicht.
Auch hat unter Linux die Installation von OpenGL aus dem Package noch nicht funktioniert, klappte unter Windows prima. IDE-Kompilieren hat gestreikt. Fehlermeldung habe ich momentan nicht im Kopf. Wie funktioniert denn das TOpenGL-Control unter Lazarus? Genauso wie dglOpenGL? Im Lazarus Buch steht nix über OpenGL.
Durch googeln bin ich auf ein pdf gestoßen wie man einem Würfel ein Bild verpassen kann. Auch im OpenGL-Beispiel von Lazarus wird ein Bild zu einem Würfel zusammengesetzt.
Aber das trifft den Nagel noch nicht auf den Kopf. Ein Würfel hat immer noch gerade Kanten bzw. Flächen die rechtwinklig aufeinander stehen. Mein "Gedanke" war es das Auto aus Einzelbildern zusammenzubauen sodass ein räumliches Auto entsteht mit all seinen nicht geraden Konturen. Stoßfänger zum Besipiel, die ziehen sich ja Richtung Erdboden nach innen, oder auch Türen. Griffe, Zier- und Stoßleisten stehen ggf. hervor usw.
Hier einen Körper zu gewinnen der das alles Berücksichtigt scheint mir unmöglich. Zumal Bilder ja "nur" aus RGB bestehen. Ganz zu schweigen davon auch noch zwei von der Sorte gegeneinander zustellen und die Kontaktpunkte einzufärben...
Aber DANKE für Deine Antwort.
Gruß
Volker
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: OpenCV / OpenGL
du kannst unter lazarus auch die dglopengl nutzen. mach ich selber erfolgreich. ich benutze an sich keine TOpenGL klasse, sonder hab nur die unit und eine form für die ausgabe. ich hab auch mal irgendwo hier im forum verstreut was dazu geschrieben.
Such mal nach der glbitmap.pas.
die vereinfacht das laden von texturen.
allerdings hast du dann erst nen kasten, für kollisionen total unspektakulär. Es gibt spezielle, professionelle (und sicherlich teure) programme die aus 2 bildern 3d daten extrahieren (im moment ja voll der trend) . Eigentlich ist das recht einfach. Du machst 2 Fotos mit einem Abstand von wenigen zentimetern, bewegt sich ein objekt stark , ist es weiter hinten, wenn es sich nur schwach bewegt ist es vorne. Das progblem ist, wie erkennst du das ein haufen roter pixel ein ball dar stellen soll ? Da für den Pc ja kein ball , nen auto und nen fahrrad im bild liegt sondern nur die pixel. Dazu hat die kamera noch ein Rauschen, da sollte man die bilder vorbereiten. Heißt mit gimp / paint.net rauschen reduzieren, eine gewisse abweichung akzeptieren.
Wenn man das erledigt hat brauch man noch die kolision, empfehlenswert währe da evt die newton game engine (stichwort sascha willems ). ich habs mir mal angeguckt, aber noch nicht zum laufen gebracht.
Such mal nach der glbitmap.pas.
die vereinfacht das laden von texturen.
Code: Alles auswählen
LoadTexture('C:\hallo.png',meinevariable);
glBindTexture(GL_TEXTURE_2D,meinevariable);
Wenn man das erledigt hat brauch man noch die kolision, empfehlenswert währe da evt die newton game engine (stichwort sascha willems ). ich habs mir mal angeguckt, aber noch nicht zum laufen gebracht.
Code: Alles auswählen
Signatur := nil;