devil02 | bonjour je dois realiser un programme en java permetant de faire une acquisition video au moyen d'une webcam et de superposer sur cette image diferents textes et formes(carrés, triangle, ligne...) qui evoluent au cours du temps afin de realiser une espece de HUD avec la ligne d'horizon, l'altitude et d'autres informations complementaires.
grace au petit programme ci dessous, j'arrive a faire l'acquisition video dont le type est component (nom de la variable: comp)
et je veut y supperposer ma methode g de type graphics (pour faire les premiers essais ce sont des textes qui n'evoluent pas dans le temps que j'ai decidé de faire afficher afin de rendreles choses plus claires)
je precise aussi que l'affichage de l'acquisition video et de la methode de dessin fonctionnent tres bien separement seulent quand je veut supperposer les 2 je ne vois que ce qui provient de ma camera et pas de mon dessin.
le probleme viendrait il du fait que ce n'est pas les memes type (component / graphics ) ou serais ce ma video qui serais affiché devant les dessins??? ou peut etre bien les 2 je vous remercie d'avance pour vos reponses.
ci dessous voici mon code
Code :
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Frame;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Image;
- import java.awt.Panel;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- import java.io.FileOutputStream;
- import javax.media.CaptureDeviceInfo;
- import javax.media.Manager;
- import javax.media.MediaLocator;
- import javax.media.Player;
- import javax.media.control.FrameGrabbingControl;
- import javax.media.format.VideoFormat;
- import javax.swing.JButton;
- import javax.swing.JComponent;
- import com.sun.image.codec.jpeg.JPEGCodec;
- import com.sun.image.codec.jpeg.JPEGEncodeParam;
- import com.sun.image.codec.jpeg.JPEGImageEncoder;
- //import java.applet.*;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.geom.*;
- import java.lang.*;
- import java.awt.Component.*;
- public class Hud extends Panel implements ActionListener
- {
- public static Player player = null;
- public CaptureDeviceInfo di = null;
- public MediaLocator ml = null;
- public JButton quit = null;
- public Image img = null;
- public VideoFormat vf = null;
-
- public Hud()
- {
- setLayout(new BorderLayout()); // definition d'une nouvelle fenetre
- setSize(800,600); // et de sa taille
-
- quit = new JButton("Quit" ); // definition du bouton quit
- quit.addActionListener(this); //
-
- String str1 = "vfw:Video Blaster Webcam Go (VFW):1"; // les drivers de la webcam
- ml = new MediaLocator("vfw://0" );
-
- try
- {
- player = Manager.createRealizedPlayer(ml);
- player.start();
- Component comp;
-
- if ((comp = player.getVisualComponent()) != null)
- {
- add(comp,BorderLayout.CENTER); // comp = la video a afficher
-
- Graphics g = player.getVisualComponent().getGraphics(); // appel de la fonction qui dessine
- aff( g ); // mon HDU
-
- }
- add(quit,BorderLayout.SOUTH); // ajoute le bouton quit a la fenetre
- }
-
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- public static void aff(Graphics g) // methode qui dessine mon HUD
- { // avec les differents elements
-
- Graphics2D g2 = (Graphics2D)g;
- Font Arial= new Font("Arial",Font.PLAIN,25);
- g2.setFont(Arial);
- g2.setPaint(Color.green);
- g2.drawString("Altitude : m" ,15,25);
- g2.drawString("Vitesse : m/s",15,500);
- g2.drawLine(0,300,800,300);
- }
-
- public static void main(String[] args)
- {
- Frame f = new Frame("H.U.D." ); // titre de la fenetre
- Hud cf = new Hud();
-
- f.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e) {
- playerclose();
- System.exit(0);}});
-
- f.add("Center",cf); // positionnement de la cam
- f.pack();
- f.setSize(new Dimension(800,600)); //definiton de sa taille
- f.setVisible(true);
- }
-
- public static void playerclose() // pour fermer le fenetre
- { // avec la croix
- player.close(); // (il me semble!)
- player.deallocate(); //
- }
-
- public void actionPerformed(ActionEvent e)
- {
- JComponent q = (JComponent) e.getSource();
-
- if (q == quit) // pour fermer
- { //
- playerclose(); // la fenetre avec
- System.exit(0); // le bouton quit
- }
- }
- }
|
Message édité par devil02 le 12-01-2005 à 20:10:14
|