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 :

Prendre une photo à partir de la webcam en Java


Sujet :

Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Prendre une photo à partir de la webcam en Java
    Bonjour,

    Je désire réaliser un programme simple en JAVA qui en cliquant sur un bouton, la webcam s'active, prends une photo et l'affiche!
    Après quelques recherches sur Internet, j'ai installé le Framework JMF avec succès et j'ai utilisé un code trouvé sur internet qui semble correct :

    http://www.fobec.com/java/1068/prend...ne-webcam.html


    Cependant j'ai la fameuse erreur " Cannot find a Player for :vfw://0 " , donc ça détecte pas ma webcam intégrée, et en lançant JMSTUDIO j'ai bien

    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
    Name = vfw:Microsoft WDM Image Capture (Win32):0
     
    Locator = vfw://0
     
    Output Formats---->
     
    0. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=640,height=400] MaxDataLength = 512000 DataType = class [B yuvType = 32 StrideY = 1280 StrideUV = 1280 OffsetY = 0 OffsetU = 1 OffsetV = 3
     
    1. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=160,height=120] MaxDataLength = 38400 DataType = class [B yuvType = 32 StrideY = 320 StrideUV = 320 OffsetY = 0 OffsetU = 1 OffsetV = 3
     
    2. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=320,height=240] MaxDataLength = 153600 DataType = class [B yuvType = 32 StrideY = 640 StrideUV = 640 OffsetY = 0 OffsetU = 1 OffsetV = 3
     
    3. javax.media.format.YUVFormat
      YUV Video Format: Size = java.awt.Dimension[width=640,height=480] MaxDataLength = 614400 DataType = class [B yuvType = 32 StrideY = 1280 StrideUV = 1280 OffsetY = 0 OffsetU = 1 OffsetV = 3
     
    4. com.sun.media.format.AviVideoFormat
      MJPG, 160x120, Length=57600 0 extra bytes
    5. com.sun.media.format.AviVideoFormat
      MJPG, 320x240, Length=230400 0 extra bytes
    6. com.sun.media.format.AviVideoFormat
      MJPG, 640x480, Length=921600 0 extra bytes

    Pouvez vous m'aider à résoudre ce problème ? ou y'a t'il une autre alternative pour prendre une photo avec ma webcam?

    Merci beaucoup

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Je vous remercie pour votre aide, mais malheureusement j'ai déjà trouvé ce code en faisant des recherches mais j'ai toujours la même erreur!

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par Julienjava Voir le message
    Bonjour,

    Je vous remercie pour votre aide, mais malheureusement j'ai déjà trouvé ce code en faisant des recherches mais j'ai toujours la même erreur!
    Avez-vous les pilotes de cette webcam intégrée? l'utilisez-vous avec un autre logiciel?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    C'est la caméra intégrée de mon PC Portable, je n'ai pas de logiciel supplémentaire à part celui qui est fourni par le constructeur (TOSHIBA) qui permet de prendre ces captures d'écrans!

    Merci pour votre aide

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Poste exactement toute l'exception qui est généré
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Je vous en suis reconnaissant pour le temps que vous m'accordez, Merci!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    javax.media.NoPlayerException: Cannot find a Player for :vfw://0
    	at javax.media.Manager.createPlayerForContent(Manager.java:1412)
    	at javax.media.Manager.createPlayer(Manager.java:417)
    	at javax.media.Manager.createRealizedPlayer(Manager.java:553)
    	at WebcamCapture.<init>(WebcamCapture.java:62)
    	at WebcamCapture.main(WebcamCapture.java:78)
    Et la fenêtre se lance mais reste vide!
    Merci encore

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Regarde ça je crois qu'ils ont trouvé la solution au problème sur ce fourm:
    https://community.oracle.com/message/5413031
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Je n'ai pas compris la méthode de résolution, je veux dire les 4 lignes qu'il propose je les mets ou exactement dans mon code?

    Merci beaucoup

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par Julienjava Voir le message
    Bonjour,

    Je n'ai pas compris la méthode de résolution, je veux dire les 4 lignes qu'il propose je les mets ou exactement dans mon code?

    Merci beaucoup
    De quel code parles-tu? tu n'a posté aucun code à ce que je sache!
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    J'utilise le code de cette page là : http://www.fobec.com/java/1068/prend...ne-webcam.html


    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    /**
     *
     * @author found on the web
     */
    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.awt.image.BufferedImage;
    import java.io.FileOutputStream;
     
    import javax.media.Buffer;
    import javax.media.CaptureDeviceInfo;
    import javax.media.CaptureDeviceManager;
    import javax.media.Manager;
    import javax.media.MediaLocator;
    import javax.media.Player;
    import javax.media.control.FrameGrabbingControl;
    import javax.media.format.VideoFormat;
    import javax.media.util.BufferToImage;
    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;
     
    public class WebcamCapture 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 WebcamCapture() {
            setLayout(new BorderLayout());
            setSize(320, 550);
     
            imgpanel = new ImagePanel();
            capture = new JButton("Capture");
            capture.addActionListener(this);
     
            String str1 = "vfw:Logitech USB Video Camera:0";
            String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
            di = CaptureDeviceManager.getDevice(str2);
            ml = new MediaLocator("vfw://0");
     
            try {
                player = Manager.createRealizedPlayer(ml);
                player.start();
                Component comp;
     
                if ((comp = player.getVisualComponent()) != null) {
                    add(comp, BorderLayout.NORTH);
                }
                add(capture, BorderLayout.CENTER);
                add(imgpanel, BorderLayout.SOUTH);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
        public static void main(String[] args) {
            Frame f = new Frame("Webcam Capture");
            WebcamCapture cf = new WebcamCapture();
     
            f.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    playerclose();
                    System.exit(0);
                }});
     
            f.add("Center", cf);
            f.pack();
            f.setSize(new Dimension(320, 550));
            f.setVisible(true);
        }
     
        public static void playerclose() {
            player.close();
            player.deallocate();
        }
     
        public void actionPerformed(ActionEvent e) {
            JComponent c = (JComponent) e.getSource();
     
            if (c == capture) {
                // Grab a frame
                FrameGrabbingControl fgc = 
     
    		(FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
                buf = fgc.grabFrame();
                // Convert it to an image
                btoi = new BufferToImage((VideoFormat) buf.getFormat());
                img = btoi.createImage(buf);
                // show the image
                imgpanel.setImage(img);
                // save image
                saveJPG(img, "c:\\test.jpg");
            }
        }
     
        class ImagePanel extends Panel {
     
            public Image myimg = null;
     
            public ImagePanel() {
                setLayout(null);
                setSize(320, 240);
            }
     
            public void setImage(Image img) {
                this.myimg = img;
                repaint();
            }
     
            public void paint(Graphics g) {
                if (myimg != null) {
                    g.drawImage(myimg, 0, 0, this);
                }
            }
        }
     
        public static void saveJPG(Image img, String s) {
            BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null),
     
    	 BufferedImage.TYPE_INT_RGB);
            Graphics2D g2 = bi.createGraphics();
            g2.drawImage(img, null, null);
     
            FileOutputStream out = null;
            try {
                out = new FileOutputStream(s);
            } catch (java.io.FileNotFoundException io) {
                System.out.println("File Not Found");
            }
     
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
            param.setQuality(1.0f, false);
            encoder.setJPEGEncodeParam(param);
     
            try {
                encoder.encode(bi);
                out.close();
            } catch (java.io.IOException io) {
                System.out.println("IOException");
            }
        }
    }

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 608
    Points
    21 608
    Par défaut
    Les deux codes en question ont player.start(). Fais en sorte que player.start() reste au même endroit.

    ... Et tu espères aller loin, comme ça, sans estimer que ce genre de choses sont évidentes ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Les deux codes en question ont player.start(). Fais en sorte que player.start() reste au même endroit.

    ... Et tu espères aller loin, comme ça, sans estimer que ce genre de choses sont évidentes ?

    Bonjour,

    Je vous remercie pour votre réponse, mais si j'ai bien évidemment déjà essayé de faire la correction mise dans le forum, mais je n'arrive pas à mettre ces deux lignes là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                   Processor ip = Manager.createRealizedProcessor(new MediaLocator("vfw://0"));
            ip.setContentDescriptor(new FileTypeDescriptor(FileTypeDescriptor.QUICKTIME));
    Je reçoit une erreur de compilation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error(64,31): method createRealizedProcessor in class javax.media.Manager cannot be applied to given types;;  required: javax.media.ProcessorModel;  found: javax.media.MediaLocator;  reason: actual argument javax.media.MediaLocator cannot be converted to javax.media.ProcessorModel by method invocation conversion
    Je vous remercie d'avance pour votre aide

  13. #13
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    je crois que tu dois ajouter avant la ligne 61:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Processor ip = Manager.createRealizedProcessor(new MediaLocator("vfw://0"));
    ip.setContentDescriptor(new FileTypeDescriptor(FileTypeDescriptor.QUICKTIME));
    Bref fait la comparaison entre les deux codes c'est pas sorcier à mon avis!
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Avez vous une idée sur l'erreur quand je place ces deux lignes de codes dans le bon endroit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error(64,31): method createRealizedProcessor in class javax.media.Manager cannot be applied to given types;;  required: javax.media.ProcessorModel;  found: javax.media.MediaLocator;  reason: actual argument javax.media.MediaLocator cannot be converted to javax.media.ProcessorModel by method invocation conversion
    Merci

  15. #15
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Merci de bien vouloir poster toute l'exception. Je crois que le problème se pose sur le type de l'argument de la méthode createRealizedProcessor
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/09/2013, 12h10
  2. [WD14] Prendre une photo via le champ webcam
    Par orditosh dans le forum WinDev
    Réponses: 1
    Dernier message: 25/08/2009, 20h25
  3. [AC-2000] prendre une photo par webcam
    Par Vil_c dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/07/2009, 11h14
  4. Réponses: 1
    Dernier message: 20/10/2006, 09h43
  5. Réponses: 2
    Dernier message: 20/10/2006, 00h20

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