Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1160 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  analyse video, graphismes 2D, directX ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

analyse video, graphismes 2D, directX ?

n°967706
raytaller
Posté le 31-01-2005 à 23:54:23  profilanswer
 

Salut,
je débute en C++ et je voudrais faire de l'analyse ultra basique d'images et de video en C++ et du graphisme simple en 2D, animé
 
 
en fait, je connais bien la librairie graphique de Java que j'utilise en gros comme ça :
 
graphics.fillRect(10,10,20,20);
graphics.setColor(Color.red);
graphics.drawOval(..);
 
le tout en boucle sur une fenêtre que je rafraîchis, et j'ai des animations.
 
et je cherche dans le même genre en C++ (sans 3D donc) car j'aimerais combiner du graphisme animé 2D avec de la video temps réel (par exemple d'une webcam).
j'ai lu que DirectShow.
 
en fait ma question c'est : est-ce qu'il existe un truc plus simple (même si moins puissant) pour combiner ce genre de trucs que directX  ?
 
il vaut mieux faire :
 
acquisition directShow -> traitement -> affichage directX  
acquisition directShow -> traitement -> affichage autre  
acquisition autre -> traitement -> affichage autre
 
 
voilà.

mood
Publicité
Posté le 31-01-2005 à 23:54:23  profilanswer
 

n°967839
SquiZZ
Posté le 01-02-2005 à 00:41:19  profilanswer
 

tu peux regarder ca :
http://www.codeproject.com/audio/featuretracking.asp
pour la partie capture.

n°967844
retrox
Posté le 01-02-2005 à 00:45:51  profilanswer
 

ça dépend de ce que tu sais déja faire
 
Est-ce que tu connais la programmation graphique bas niveau (ie comment est fait un framebuffer)? Faire du graphisme procédural (ie coder toi meme les FillRect et consorts)?
Est-ce que tu sais controler un codec (d'un point de vue programmation, pas utilisation d'un frontend genre VFW)?
Est-ce que tu sais blitter un buffer?  
 

n°968711
raytaller
Posté le 01-02-2005 à 19:39:53  profilanswer
 

SquiZZ > merci ça a l'air super
 
retrox > pour ce qui est des codecs, non, j'y connais rien (j'utilisais des trucs tout faits en java)
 
pour le graphisme bas niveau, en fait ce que je voudrais utiliser est très simple
 
j'ai déjà fait un peu de graphisme en C pur, en enregistrant directement les images sur le disque et manipuler un grand tableau de 800*600 pixels me suffirait à la limite
tout ce que j'aimerais c'est pouvoir le faire en double buffering en C++
 
j'ai déjà fait du double buffering avec wxWidgets remarque, mais je crois pas que pour l'animation, c'est ce qu'il y ait de mieux (même si je pense pas avoir besoin d'une accélération matérielle)
 
 
 
note : voilà je genre de trucs que j'ai fait en C pur, un truc pixel par pixel me suffirait
 
http://imagenese.net/attractors/pics/2000.2000.1.med.jpg
http://imagenese.net/attractors/pics/1600.1200.2.med.jpg
 
 
remarque : en fait ce programme prennait vachement beaucoup de ram, parce que chaque pixel est un objet qui contient 3 double R, G, B (je convertissais en char à la fin)


Message édité par raytaller le 01-02-2005 à 19:41:53
n°968777
retrox
Posté le 01-02-2005 à 21:33:53  profilanswer
 

Hyperplan de quaternions ? Attracteur étrange? C'est zouli en tout cas.
 

Citation :

tout ce que j'aimerais c'est pouvoir le faire en double buffering en C++

Ca va dépendre de la librairie utilisée pour afficher ton buffer.  
GDI (Win32/MFC) : double-buffering à la main
DirectX (DirectDraw) : flipping chain
OpenGL : pixel format avec double-buffering
 
Fondamentalement, ça change pas grand chose.  
Cela dit, pourquoi se priver de l'accélération matérielle? C'est pas plus compliqué que de se farcir une API soft (comme GDI), et c'est beaucoup plus puissant (surtout si tu veux faire du compositing). Enfin bon ça dépend de ton but. Si c'est pour apprendre, pourquoi pas tout faire en soft. Si c'est pour aboutir plus rapidement au résultat, autant utiliser le matériel et les librairies qui l'exposent.
 
Sinon c'est clair, c'est pas une super idée un objet par pixel ;-) Faut travailler avec des tableaux, unidimensionnels de préférence (à toi de faire l'adressage proprement (attention à l'alignement)).

n°968790
raytaller
Posté le 01-02-2005 à 22:05:49  profilanswer
 

merci !
mais on (je sais pas ce que ça vaut) m'a dit que openGL de toutes façons, ils calculait de la 3d tout le temps, ce qui me semble un peu dommage
 
pour directX, en fait, j'ai installé le sdk 9, compilé un hello world (en fait le teapot en  3D ) avec devC++, mais j'avoue que je suis cassé par le nombre de lignes du fichier principal (1700) et j'ai comme l'impression que c'est un truc pas à la même mesure de ce dont j'ai besoin.
 
en même temps, c'est ptet parce que c'est de la 3D, je vais chercher des exemples de directDraw "pur"
 
 
l'exemple posté par SquiZZ reçoit et traite les images en MFC (là aussi j'y connais rien) et j'me dis que c'est ptet plus adapté de garder la même techno pour l'acquisition et l'affichage, c'est pour ça que je cherchais un bon compromis
 
 
sinon, les images c'est effectivement des attracteurs étranges :)
plus d'infos là : http://www.imagenese.net/attractors

n°968816
Kristoph
Posté le 01-02-2005 à 22:39:23  profilanswer
 

Je te conseille de jeter un coup d'oeil à libSDL ( http://libsdl.org/ )
Il y a tout ce qu'il faut pour faire des manipulations pixel par pixel et aussi un module pour la decompression video mpeg

n°969292
retrox
Posté le 02-02-2005 à 13:15:52  profilanswer
 

Pour OpenGL ce n'est pas tout à fait exact. Une partie de l'API est consacrée à la manipulation d'image (courament appelé pixel path). Par contre la partie à base de primitives (celle dont on parle en général) repose effectivement sur un pipeline 3D classique, meme pour de la 2D (et la 1D). Mais ce n'est en rien un handicap, ni en terme de performance, ni en terme de foncionnalité.
 
Pour ce qui est de DirectX, oui c'est une grosse machine, et le premier pas est le plus dur à faire. En particulier le code d'initialisation est fastidieux, mais c'est pareil avec toutes les APIs (du moins sans utilisation de toolkit approprié). Une fois que tu as pigé les grands principes de design de l'API, c'est du tout cuit :D
DirectDraw si je me souviens bien n'est plus modifié depuis DX7, et pour cause, c'est ce qu'il y a de plus bas niveau. En gros, il n'y a pas grand chose, juste de quoi allouer des surfaces, les permutter, les afficher (avec synchro verticale éventuellement)... Donc bon, une fois que tout ça est bien défini et implémenté, y a pas besoin d'y toucher d'une version à l'autre.
 
SDL j'attendais que quelqu'un le mentionne. Je connais pas du tout. Il parait que c'est bien :)
 
Si tu veux pas te prendre la tete, trouve une petite lib pour l'acquisition video, fais ton traitement, et utilise une API simple pour affichage (je veux dire : qui ne nécessite pas 500 lignes d'initialisation).
Si tu veux faire moderne, je te conseillerais DirectShow + Direct3D (meme si c'est pas 3D, c'est pas grave).

n°969911
raytaller
Posté le 02-02-2005 à 21:19:07  profilanswer
 

merci de tes conseils :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  analyse video, graphismes 2D, directX ?

 

Sujets relatifs
[JMF] Analyse de video plus ou moins temps réel, faisable ?Comment perdre les paquets d'un flux vidéo?
problemedinsertion de video dans mon siteRecupération du flux video d'une camera ip
Recherche de graphiste(s) pour un RPG VB/DirectX !Lancer une vidéo à l'aide d'un comboBox
[Java][JMF]Modification d'une vidéoEnregistrer de la vidéo à partir d'une carte d'acquisition
[Analyse] La methode Merise encore d'actualité ? 
Plus de sujets relatifs à : analyse video, graphismes 2D, directX ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR