IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

detection de mouvement d'une image


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Points : 33
    Points
    33
    Par défaut detection de mouvement d'une image
    bonjour, en développant une application , je veux afficher une boite de dialogue lorsqu'il y a un détection de mouvement dans une image (image est récupérer d’après ma cam )


    voilà le code que j'ai écrit (detection d'image et la sauvegarder dans le disque sur )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    ......
    public class Test extends Panel implements ActionListener{
        public static Player player=null;
        public CaptureDeviceInfo di=null;
        public MediaLocator ml=null;
        public JButton capture=null;
        public Buffer buf=null;
        public Image img=null;
        public VideoFormat vf=null;
        public BufferToImage btoi=null;
        //public ImagePanel imgpanel=null;
        public int capturenumber=0;
     
     
        public Test() throws IOException{
            setLayout(new BorderLayout());
            setSize(320,550);
        //    imgpanel=new ImagePanel();
            capture= new JButton("Capture"); // Création d'une bouton
            capture.addActionListener(this); // associér les evenement à cet
            String str = "vfw:Microsoft WDM Image Capture (Win32):0";
            di=CaptureDeviceManager.getDevice(str);
            ml = new MediaLocator(str);
           // Player player = null;
            try {
                player=Manager.createRealizedPlayer(ml);
            } catch (NoPlayerException ex) {
                Logger.getLogger(Test_capture.class.getName()).log(Level.SEVERE, null, ex);
            } catch (CannotRealizeException ex) {
                Logger.getLogger(Test_capture.class.getName()).log(Level.SEVERE, null, ex);
            }
                player.start();
                Component comp;
                try{
                if((comp = player.getVisualComponent())!=null){
                  add(comp,BorderLayout.NORTH);
                  add(capture,BorderLayout.CENTER);}
    //            add(imgpanel,BorderLayout.SOUTH);
            }
            catch(Exception ex){
                ex.printStackTrace();
            }
        }
     
     
        public static void playerclose(){
            player.close();
            player.deallocate();
        }
     
         public void saveJPG(String image_name, Image img) throws IOException {
              {
                  /*BuffredImage représente les données de l'image dans la mémoire
                  Type_INT_RGB veut dire que les composants coloré avec des couleur 8 bits*/
            BufferedImage bi= new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
            Graphics2D g2=bi.createGraphics();
            g2.drawImage(img, null, null); // drawImage : permet de dessiner dans un endroit précis (coordonnées)
            FileOutputStream out=null;
       String file_format = image_name.substring(image_name.lastIndexOf('.')+1);
    try {
    // Date d = new Date();
        Date dNow = new Date( );
          SimpleDateFormat ft = new SimpleDateFormat ("yyyy_MM_dd_hh_mm_ss");
     
    boolean success = ImageIO.write(bi, file_format, new File("C:\\Users\\user\\Downloads\\pfe_tof\\PIC_"+ft.format(dNow)+".jpg"));
    if (!success) {
    JOptionPane.showMessageDialog(this, "Ecriture impossible:"+file_format);
    }
    }
    catch (IOException | HeadlessException e) {
    e.printStackTrace();
         }// end catch
         }//end save
        }
     
        public void actionPerformed(ActionEvent e) {
            JComponent c = (JComponent) e.getSource();
            if(c==capture){
                FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
                buf = fgc.grabFrame();
                btoi= new BufferToImage((VideoFormat)buf.getFormat());
                img = btoi.createImage(buf);
                //imgpanel.setImage(img);
                Calendar cal= Calendar.getInstance();
                @SuppressWarnings("static-access")
               int data = (cal.getTime().getYear()+1900)*10000+ (cal.getTime().getMonth()+1)*100+cal.getTime().getDate();
                try {           
                    saveJPG("image1.jpg",img);
                } catch (IOException ex) {
                    Logger.getLogger(Test_capture.class.getName()).log(Level.SEVERE, null, ex);
                }
                capturenumber++;
            }
        }
            public static void main(String[] args) throws IOException{
            Frame f=new Frame("Take picture");
            Test cf = new Test();
     
            f.add(cf);
            f.pack();
            f.setSize(320, 550);
            f.setVisible(true);
        }
    ma Question : Quelle modification à faire dans ce code car je suis bloqué !!! et merci

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Si ton problèmes est d'afficher une boite de dialogue, tu peux t'orienter vers JOptionPane.

    Si ton problèmes est la détection d'une différence entre 2 images, je pense que le forum traitement d'image ou algorithme serait plus approprié.

    Mais la simple options de calculer la différence entre chaque pixel, en tenant compte du bruit pourrait naïvement marche selon les cas. (mais c'est une solution à 2 francs 50)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par wax78 Voir le message
    mais c'est une solution à 2 francs 50
    J'aurais dit moins que ca

Discussions similaires

  1. detection de forme dans une image
    Par amintek dans le forum Traitement d'images
    Réponses: 11
    Dernier message: 15/05/2007, 13h35
  2. Réponses: 7
    Dernier message: 01/05/2007, 21h55
  3. Detection de visages dans une image
    Par bert_ dans le forum Traitement d'images
    Réponses: 11
    Dernier message: 19/03/2007, 21h22
  4. Detecter le poids d'une image avec l'objet DOM
    Par crimsonPhantom dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/07/2006, 16h54
  5. [Cookies] Detecter la presence d'une image
    Par hugo69 dans le forum Langage
    Réponses: 3
    Dernier message: 03/03/2006, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo