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

C# Discussion :

Gestion d'une Webcam [Débutant]


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 59
    Points : 27
    Points
    27
    Par défaut Gestion d'une Webcam
    Bonjour à tous, ce n'est pas la première fois que je demande de l'aide, ni la dernière mais bon ^^'

    J'vous explique la situation :

    Je dois réaliser un projet en C# qui gère l'enregistrement d'un flux vidéo de la webcam (c'est la première partie du projet) et je ne trouve aucun tutoriel explicite pour réaliser ça de façon simple...

    Merci d'avance à ceux qui m'aideront !

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 148
    Points : 291
    Points
    291
    Par défaut
    Bonjour,

    je crois qu'une des nouveautés de silverlight 4 est la gestion de la webcam

  3. #3
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    C'est quelque chose que je n'ai jamais fait ; mais, sur le net, j'ai trouvé ça.
    J'espère que ça va t'être utile.

    Surtout, tiens-nous au courant de tes progrès. C'est un projet intéressant !
    En informatique, le problème se situe toujours entre le clavier et l'écran !
    Il y a deux chemins entre le clavier et l'écran : Par l'UC et par l'utilisateur.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Mon prof m'a proposé d'utiliser EMGUCV mais j'arrive pas à m'en sortir... je trouve des tutos mais jamais avec les bons liens à télécharger pour les librairies etc...

    et merci d'avoir répondu si vite les gars !

    Je suis en train de regarder sur le wiki de emgucv : http://www.emgu.com/wiki/index.php/D...lation#Windows si quelqu'un a des idées ou une aide à me proposer j'y dis pas non

    [EDIT]
    Si quelqu'un s'y connaît un peu j'accepte volontiers de l'aide parce que la je m'en sors pas du tout... le emgucv qui se mélange à l'opencv etc j'ai la tête qui s'embrouille...[/EDIT]

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Re tout le monde !
    Voilà à quoi je suis arrivé entre temps par un codage simple grâce à Emgu CV. Maintenant je cherche à comment enregistrer un flux vidéo grâce à cette bibliothèque... Si quelqu'un sait... Merci d'avance les gars !


    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
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Emgu.CV;
    using Emgu.CV.Structure;
    using Emgu.Util;
     
    namespace CameraCapture
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private Capture capture;        //capture les images de la webcam
            private bool captureInProgress; // vérifie la capture
     
            private void btnStart_Click(object sender, EventArgs e)
            {
                #region if capture is not created, create it now
                if (capture == null)
                {
                    try
                    {
                        capture = new Capture();
                    }
                    catch (NullReferenceException excpt)
                    {
                        MessageBox.Show(excpt.Message);
                    }
                }
                #endregion
               if (capture != null)
                {
                    if (captureInProgress)
                    {  //si la caméra est enclenché alors btnStart.text = start ! 
                        btnStart.Text = "Start!"; //
                        Application.Idle -= ProcessFrame;
                    }
                    else
                    {
                        //si la caméra n'est pas enclenché changer le nom du btnStart en "Stop"
                        btnStart.Text = "Stop";
                        Application.Idle += ProcessFrame;
                    }
     
                    captureInProgress = !captureInProgress;
                }
            }
     
            private void ProcessFrame(object sender, EventArgs arg)
            {
                Image<Bgr, Byte> ImageFrame = capture.QueryFrame();  //line 1
                CamImageBox.Image = ImageFrame;        //line 2
            }
     
            private void ReleaseData()
            {
                if (capture != null)
                    capture.Dispose();
            }
     
            private void btnSave_Click(object sender, EventArgs e)
            {
               //Code pour capturer le flux vidéo.
            }
        }
    }

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 140
    Points
    140
    Par défaut
    Bonjour,

    En parcourant l'API de EMGUCV , j'ai trouvé la classe VideoWriter qui à une méthode WriteFrame qui semble correspondre à ton besoin.

    Je pense qu'il faut l'utiliser à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CamImageBox.Image = ImageFrame;
    lorsque tu souhaite faire une capture.

    Bon courage.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    J'suis arrivé à enregistrer une vidéo mais le problème c'est la taille du fichier et de la hauteur/longueur de la vidéo... pour une vidéo de 10sec le fichier pèse 110 MO ...

    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
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Emgu.CV;
    using Emgu.CV.Structure;
    using Emgu.Util;
     
    namespace CameraCapture
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private Capture capture;        //capture les images de la webcam
            private bool captureInProgress; // vérifie la capture
     
            VideoWriter VCapture;
     
            private void btnStart_Click(object sender, EventArgs e)
            {
                #region if capture is not created, create it now
                if (capture == null)
                {
                    try
                    {
                        capture = new Capture();
                    }
                    catch (NullReferenceException excpt)
                    {
                        MessageBox.Show(excpt.Message);
                    }
                }
                #endregion
               if (capture != null)
                {
                    if (captureInProgress)
                    {  //si la caméra est enclenché alors btnStart.text = start ! 
                        btnStart.Text = "Start!"; //
                        Application.Idle -= ProcessFrame;
                    }
                    else
                    {
                        //si la caméra n'est pas enclenché changer le nom du btnStart en "Stop"
                        btnStart.Text = "Stop";
                        Application.Idle += ProcessFrame;
                    }
                    captureInProgress = !captureInProgress;
                }
            }
     
            private void ProcessFrame(object sender, EventArgs arg)
            {
                Image<Bgr, Byte> ImageFrame = capture.QueryFrame(); 
                CamImageBox.Image = ImageFrame;        //affiche le flux dans la CamImageBox
                if(VCapture != null)
                    VCapture.WriteFrame<Bgr, Byte>(ImageFrame);
            }
     
            private void ReleaseData()
            {
                if (capture != null)
                    capture.Dispose();
            }
     
            private void btnSave_Click(object sender, EventArgs e)
            {
                VCapture = new VideoWriter(@"output.avi",24, 640, 480, true);
            }
     
            private void btnStop_Click(object sender, EventArgs e)
            {
                VCapture = null;
            }
     
        }
    }

  8. #8
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    tu peux utiliser la librairie forge.Net

    Il s'agit d'une excellente solution pour faire ce que tu veux

    et elle est gratuite, en C# et simple d'utilisation..
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    salut

    tu peux utiliser la librairie forge.Net

    Il s'agit d'une excellente solution pour faire ce que tu veux

    et elle est gratuite, en C# et simple d'utilisation..
    Salut... Merci de me proposer quelque chose d'autre mais mon maître de classe m'a carrément imposé l'Emgu Cv et l'Open CV ... Donc j'ai commencé avec ça faut que je termine avec ça ... J'ai réussi à compresser les vidéos en DIVX uen vidéo de 1minute ne me prend plus au tant de place mais les vidéos sont en accellérées je ne sais pas pourquoi ...

  10. #10
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    ok, comme tu veux

    Rectificatif: c'est AForge.Net

    ET tu diras à ton prof que cette librairie AForge étant entièrement écrit en .Net, s'est quand même plus sympa que de prendre un portage...

    Enfin, un prof ouvert, c'est cool.

    Sinon, si tes vidéos sont accélérées, ça peut venir du "framerate" défini dans ton fichier (dans l'en-tête)...
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 19
    Points
    19
    Par défaut

    voici un lien qui est trés utile c'est une application OPEN SOURCE codée en C# ressemble a ton application
    bon courage et bonne continuation

  12. #12
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Merci les gars pour le soutien ! Ca fait super plaisir mais l'application iSpy n'utilise ni Emgu CV ni OpenCV ... et je dois me servir que de ces deux bibliothèque c'est ça le p***** de hic.

    Si jamais pour l'instant je laisse de côté le bug d'accélération des images, j'cherche à faire le gros d'abord et les détails après, je cherche maintenant comment détecter un mouvement sur le flux vidéo envoyé depuis la webcam ...

  13. #13
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 59
    Points : 27
    Points
    27
    Par défaut
    Je me suis converti à Aforge.Net finalement c'est beaucoup plus simple ! la preuve :
    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
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using AForge.Video;
    using AForge.Video.DirectShow;
    using AForge.Vision.Motion;
    using System.Drawing.Imaging;
    using AForge.Imaging;
    using AForge.Video.VFW;
     
    namespace CameraAforge
    {
        public partial class Form1 : Form
        {
            private FilterInfoCollection VideoCapturesDevices;
            private VideoCaptureDevice FinalVideoSource;
            AVIWriter writer;
     
            int iCpt=0;
     
            //double dblTest = 0;
            MotionDetector detector = new MotionDetector(new SimpleBackgroundModelingDetector(), new MotionAreaHighlighting());
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                VideoCapturesDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
                foreach (FilterInfo VideoCapturesDevice in VideoCapturesDevices)
                {
                    comboBox1.Items.Add(VideoCapturesDevice.Name);
                }
                writer = new AVIWriter("wmv3");
     
                writer.Open("test.avi", 640, 480);
                timer1.Start();
            } 
     
            private void btnStart_Click(object sender, EventArgs e)
            {
     
                FinalVideoSource = new VideoCaptureDevice(VideoCapturesDevices[comboBox1.SelectedIndex].MonikerString);
                FinalVideoSource.NewFrame += new NewFrameEventHandler(FinalVideoSource_NewFrame);
                FinalVideoSource.Start();
     
                writer.Open("test.avi", 640, 480);
                btnStart.Enabled = false;
                btnStop.Enabled = true;
            }
     
            bool Test = false;
            public  void FinalVideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
            {
                    Bitmap image = (Bitmap)eventArgs.Frame.Clone();
                    writer.AddFrame(image);            
                    Bitmap image2 = (Bitmap)eventArgs.Frame.Clone();
                    pbxWebcam.Image = image;
                    if ( detector.ProcessFrame(image2) > 0.5 )
                    {
                        Test = true;
                        //timer1.Start();
                        //timer1.Enabled = true;
                        writer.AddFrame(image2);   
                    }
                    if (Test == true)
                    {
                        writer.AddFrame(image2);
                    }
     
                  /*  if (timer1.Enabled)
                    {
                        if (iCpt < 3000 )
                        {
                            timer1.Stop();
                            timer1.Enabled = false;
                        }
                        else
                        {
                            writer.AddFrame(image2);
                        }
                    }*/
            }
     
            private void Form1_FormClosed(object sender, FormClosedEventArgs e)
            {
                if (FinalVideoSource.IsRunning)
                    FinalVideoSource.Stop();
            }
     
            private void btnStop_Click(object sender, EventArgs e)
            {
                writer.Close();
                timer1.Stop();
                Test = false;
                btnStart.Enabled = true;
                btnStop.Enabled = false;
                if (FinalVideoSource.IsRunning)
                    FinalVideoSource.Stop();
            }
     
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (iCpt < 3000)
                    iCpt += timer1.Interval;
                else
                    timer1.Stop();
            }
        }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion de la luminosité d'une webcam
    Par black_hole dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 03/03/2014, 20h47
  2. Gestion superposition images d'une webcam
    Par ballon17 dans le forum Débuter
    Réponses: 2
    Dernier message: 25/08/2012, 15h03
  3. Gestion d'une webcam
    Par Julien1934 dans le forum DirectX
    Réponses: 3
    Dernier message: 07/06/2011, 09h47
  4. Gestion d'une webcam sous Matlab
    Par velkouby dans le forum Images
    Réponses: 1
    Dernier message: 08/07/2009, 21h19
  5. gestion d'une webcam
    Par thierrybatlle dans le forum Delphi
    Réponses: 1
    Dernier message: 26/06/2006, 23h54

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