visualiser objet dessiner en opengl dans une fenêtre opencv - C++ - Programmation
Marsh Posté le 09-06-2010 à 00:17:10
Je ne sais pas trop comment marche openGL, mais si tu as en sortie une image 2D, tu devrais pouvoir la mettre dans une IplImage pour l'afficher avec openCV. Ca ressemble à quoi les structures de sortie d'openGL?
Marsh Posté le 09-06-2010 à 09:17:14
l'objet que j'ai dessiné avec opengl c'est un ensemble de point.
je voudrais plaqué cet objet sur une image dans une fenêtre opencv(au lieu d'un rectangle autour de visage je voudrais plaqué une cylindre dessiner en opengl
Marsh Posté le 09-06-2010 à 10:33:21
moi à l'inverse c'est opencv que je ne sais pas ce que c'est.
mais opengl ne dessine que dans les buffers de la carte et c'est à l'OS de fournir un moyen de mapper une zone de mémoire du backbuffer sur une zone cliente dans une fenêtre.
(EGL, WGL, XGL, CGL, AGL, Cocoa...)
on active le contexte opengl sur une fenetre avec une fonction de l'OS comme wglMakeCurrent.
Il faut que la bibliothèque de fenêtre puisse laisser l'accès au handle OS (hwnd..) . ou bien encapsule explicitement des zones OpenGL. (en general elles crééent carrément le contexte dans ce cas)
comment as tu créé le contexte ? avec SDL ou wglCreateContext ou autre ?
Marsh Posté le 09-06-2010 à 10:34:13
non sont en 3d .
ça mon premier problème le deuxième problème c'est que j'ai fais appelle à une fonction
j
Code :
|
où recta c'est de type CvRect.
maintenant au lieu de CvRect je voudrais faire un autre paramètre qui est l'objet 3d déjà dessiné (n'est pas prédéfini en opencv) est ce que je peux faire ça ?
une dérniére question est ce que je peux dessine une cylindre en opencv? et je peux le plaqué sur l'image sans passer par l'étap d'opengl? à mon avis non
Marsh Posté le 09-06-2010 à 10:36:48
en general on fait plutot:
- rendu 2D dans un image
- utilisation de l'image dans une texture 2D plaqué sur un quad openGL vu "à plat"
- incrustation de la 3D
Et tout est en openGL, openCV ne te file que la texture de la video.
Marsh Posté le 09-06-2010 à 10:40:29
Lightness1024 a écrit : |
j'ai utilisé l'opengl que pour déssiné mon cylindre . alors je ne sis pas qu'est ce que j'ai utilisé je sais que j'ai utilisé la bibliothéque glut
et j'ai fais cette fonction pour créer la fenêtre
Code :
|
alors par ce que vous avez des idées sur opengl
est ce que je peux charger un vidéo avec opengl et le visualiser (faire des calcules et des modification sur ces images avec opengl?
Marsh Posté le 09-06-2010 à 10:45:11
Joel F a écrit : en general on fait plutot: |
j'ai réussi à faire ça pour une image
mais quand j'ai maintenant un video et il faudra plaqué à chaque fois (dans chaque frame) le cylindre . je ne sais pas est ce que opengl fourni cette opetion ou non
Marsh Posté le 09-06-2010 à 10:50:08
tu peux toujours faire des glTexImage a chaque frame oui.
ok tu as utilisé glut, donc glut t'a créé ton contexte ET ta fenetre. tu pourras jamais afficher l'opengl dans une autre fenetre de cette maniere.
il faudra par exemple créer une framebuffer comme destination de rendu, et le rappatrier avec un readpixels.
ou dans l'autre sens comme dit Joel, tu expédies tes textures a opengl a chanque frame et glut te fait l'affichage du total.
Marsh Posté le 09-06-2010 à 11:05:21
Citation : ou dans l'autre sens comme dit Joel, tu expédies tes textures a opengl a chanque frame et glut te fait l'affichage du total. |
est ce que ça passe en temps réel ?
par ce que j'ai pas essayé de faire ça
Marsh Posté le 09-06-2010 à 11:14:18
ca dépend de la taille des textures. mais il me semble qu'il y a des techniques pour laisser le CPU tranquile pendant que le DMA transfert le truc qui peuvent permettre un bon temps réel avec marge.
essaye déjà avec juste glTexImage je pense que ca passera.
Marsh Posté le 09-06-2010 à 13:30:53
ReplyMarsh Posté le 09-06-2010 à 14:56:05
Reply
Marsh Posté le 08-06-2010 à 22:32:03
bonjour,
j'ai dessiné une cylindre 3d en opengl et je voudrais l'afficher ou visualiser dans une fenêtre opencv est ce que je peux faire ça et comment ?
Message édité par dreamvig le 08-06-2010 à 23:17:52