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

  FORUM HardWare.fr
  Programmation
  Java

  Modifier une vidéo en temps réel [ Résolu .. en partie]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Modifier une vidéo en temps réel [ Résolu .. en partie]

n°518765
calimerot
Posté le 20-09-2003 à 12:15:17  profilanswer
 

Bonjour.
Ce que je voudrais faire c'est :  
1) capturer la vidéo par une WebCam
2) Modifier "la vidéo" en appliquant par ex un filtre rouge
3) l'afficher... en espérant que le traitement image par image ne soit pas trop long et rende qq chose qui soit assez fluide.
 
Alors pour l'instant ,j'arrive à capturer la vidéo d'une webcam , appliquer un filtre à une image , quand je clique sur un bouton "Filtre" et afficher le résultat ... ce que je voudrais faire maintenant ,c'est la modification "en temps réel" de ce que vois la caméra.
Voila à quoi ressemble ce que j'ai réalisé.
http://www.multimania.com/biologiemol/video.JPG
Tout à gauche, un panel contenant l'image Capturée/Filrée
Tout à droite , la vidéo qui s'affiche en tps réel.
 
J'ai mis comme code sur le bouton "Restore" : (c'est simplement pour que je puisse commencer le traitement quand je le désire .. mais le bouton restore n'avait pas cette tache à la base ... c'est juste temporaire)

Code :
  1. public void actionPerformed(ActionEvent e) {
  2.   Component c = (Component)e.getSource();
  3.   if (c==acquis) {
  4. /** etc....**/
  5.                 }
  6. /**etc...**/
  7.                 if (c==restore) {
  8.          compteur=0;
  9.   while(compteur<2) { // Qui deviendra une boucle  
  10. //sans fin par la suite , pour vérifier le bon fonctionnement  
  11. // du prog
  12.   acquis.doClick();
  13.   filtreR.doClick();
  14.   compteur++;
  15.   imgPanel.setImage(img);
  16.   for(int i=0;i<100000000;i++){
  17. //Boucle immonde sensé simuler une pause ...
  18.   }
  19.   System.out.println("Ok" );
  20.  }
  21. }


Donc le prog est sensé simuler un appui sur Acqui . Ce qui charge en mémoire l'image (dans un objet de type Image) que l'on voit à la caméra ,mais ne l'affiche pas .
Puis un appui sur filtre qui opère sur l'image chargé.
Enfin , j'affiche l'image dans le panel tout à gauche.

Voila le pb :
Le compteur est à deux , donc je devrais voir 2 images s'afficher successivement .... tenant compte de la pseudo pause pas propre que j'ai rajouté . Cependant , la première image capturée/filtrée ne s'affiche pas ,uniquement la deuxième s'affiche..... Or je voudrais avoir qq chose qui ressemble à du filtrage temps réel de la vidéo  
 
Une idée ?  
Merci d'avance.
C@limerot
 
NB : Edit :
l'objet imgPanel est un objet de la classe ImagePanel suivante :

Code :
  1. class ImagePanel extends Panel
  2.    {
  3.      public Image myimg = null;
  4.    
  5.      public ImagePanel()
  6.      {
  7.        setLayout(null);
  8.        setSize(320,240);
  9.      }
  10.    
  11.      public void setImage(Image img)
  12.      {
  13.        this.myimg = img;
  14.        repaint();
  15.      }
  16.    
  17.      public void paint(Graphics g)
  18.      {
  19.        if (myimg != null)
  20.        {
  21.          g.drawImage(myimg, 0, 0, this);
  22.        }
  23.      }
  24.    }


Message édité par calimerot le 20-09-2003 à 14:13:50
mood
Publicité
Posté le 20-09-2003 à 12:15:17  profilanswer
 

n°518814
calimerot
Posté le 20-09-2003 à 14:13:23  profilanswer
 

Résolu :  
L'utilisation d'un thread permet de résoudre le pb ... maintenant, il faut alléger les traitements pour accélérer l'affichage ... pour faire du "temps réel" :
 

Code :
  1. else if(c == restore) {
  2.    //System.out.println("Restauration de l'image avant modification" );
  3.    th = new myThread();
  4.    th.start();
  5.   }
  6.  }
  7.  class myThread extends Thread {
  8.   boolean afini = false;
  9.   public void run() {
  10.    try {
  11.    System.out.println("Exécution du Thread" );
  12.    acquis.doClick();
  13.   filtreR.doClick();
  14.      imgPanel.setImage(img);
  15.      //sleep(1); A priori inutile mais je pensais
  16. // qu'une pause permettrait au thread principal d'avoir
  17. // les ressources du processeur pour lui tout seul ...  
  18. // permettant peut être d'afficher la vidéo de droite
  19. // d'une manière plus fluide
  20.      run();
  21.      }
  22.      catch(Exception e){}
  23.   }
  24.  }


Quoi que la vidéo à droite ne continue pas à s'afficher .. j'ai des ralentissements . Meme si le thread principal est en concurrence avec le thread créé ... j'aurais pensé avoir qq chose de plus ou moins fluide .
 
enfin voila .

n°518987
veryfree
Posté le 20-09-2003 à 18:37:09  profilanswer
 

juste par curiosité,, c'est difficile a mettre en place?
t utilise une api spéciale genre Java Media framework ?
le code source est t il dispo ?  :whistle:  
 
 
 

n°518989
Taz
bisounours-codeur
Posté le 20-09-2003 à 18:44:17  profilanswer
 

Citation :

  for(int i=0;i<100000000;i++){
          //Boucle immonde sensé simuler une pause ...

:lol:

n°519232
darklord
You're welcome
Posté le 20-09-2003 à 22:18:49  profilanswer
 

veryfree a écrit :

juste par curiosité,, c'est difficile a mettre en place?
t utilise une api spéciale genre Java Media framework ?
le code source est t il dispo ?  :whistle:  
 
 
 
 


 
c'est du JMF oui :)


---------------
Just because you feel good does not make you right
n°519242
veryfree
Posté le 20-09-2003 à 22:33:30  profilanswer
 

DarkLord a écrit :


 
c'est du JMF oui :)


 
je veux le meme alors  [:snoozy]

n°519294
calimerot
Posté le 21-09-2003 à 00:19:29  profilanswer
 

veryfree a écrit :


 
je veux le meme alors  [:snoozy]  


 
Effectivement ,c'est du JMF ;
Ce n'est pas particulièrement dur à mettre en place , mais le tps de tout développer , il m'a fallu deux semaines  :bounce:  
Le tout étant de mettre la main sur du code assez bien construit pour le comprendre ... et l'adapter .
Si tu veux le code :
http://www.multimania.com/biologiemol/Convertisseur/
Les commentaires ne sont pas forcément trés clair ... j'ai laissé ceux que j'avais mis sans les retoucher ... si tu as des questions :
calimerot_6@hotmail.com

n°520441
veryfree
Posté le 22-09-2003 à 15:33:09  profilanswer
 

merci bien je regarde ca qd je peux :)


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

  Modifier une vidéo en temps réel [ Résolu .. en partie]

 

Sujets relatifs
Question sur gestion clavier avec TP [résolu][OpenGL] arrive po a coller une texture sur une subWindow :'( [resolu]
graph + fichier [résolu]outtextxy [résolu]
[résolu]Problème de compatibilité IE sur un bout de codefonction mail et OVH marche plus [résolu]
Exception definie par l utilisateur sous ORACLE (+Delphi) [RESOLU][résolu] Javadoc : 3000 sources à parser dans 125 répertoires
comment reutiliser des $variables dans un formulaire php ? [resolu]Transfert bdd free --> OVH [résolu]
Plus de sujets relatifs à : Modifier une vidéo en temps réel [ Résolu .. en partie]


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