Exemplo n.º 1
0
        private void afficheImage(object sender, NewFrameEventArgs eventArgs, Image <Emgu.CV.Structure.Bgr, Byte> e)
        {
            /* Affiche l'image recu par la WebCam */
            // Instancie un Thread
            if (ListeImage[lastThread] == null)
            {
                ListeImage[lastThread] = new ImgWebCam((Bitmap)eventArgs.Frame.Clone(), nbImageCapture, tailleGlyph, new IntPtr(), e);
                //ListeImage[lastThread].imgRecu = e;
                lastThread++;
                lastThread %= nbThread;
            }

            //imgTraitment(new ImgWebCam((Bitmap)eventArgs.Frame.Clone(), nbImageCapture, tailleGlyph));
            // Traitement et Affichage des images
            try
            {
                if ((nbImageCapture % 10) == 0)
                {
                    FPS.Invoke((UpdateFPS)affichageFPS);
                }
            }
            catch { }


            nbImageCapture++;
        }
Exemplo n.º 2
0
        public void imgTraitment(ImgWebCam img)
        {
            /* Homographie du terrain et detection contours */
            System.DateTime milisss = System.DateTime.Now;


            String s = "Homographie = ";

            if (imageShow % nbImgColorTraiter == 0 && LstHslFiltering.Count > 0)
            {
                img.homographie(LimiteTerrain, true);
            }
            else
            {
                img.homographie(LimiteTerrain, false);
            }
            System.DateTime no = System.DateTime.Now;
            s += (no - milisss).Milliseconds;
            no = System.DateTime.Now;

            if (col != null)
            {
                addcouleur(img.getUnImgReel().ToManagedImage());
            }

            // img.ColeurVersNB();
            s += "Detection contour = ";
            no = System.DateTime.Now;
            img.DetectionContour((short)numericUpDown1.Value);
            s += (DateTime.Now - no).Milliseconds;
            // Logger.GlobalLogger.info("Duree Execution:   " + s);



            /* Reconnaissance des glyphs et taille du terrain si besoin */
            if (imageShow < img.getNumeroImg() && (ratioCmParPixel[0] == 1 || ratioCmParPixel[1] == 1))
            {
                double[] tmp = img.detectionGlyph(true);
                if (tmp != null)
                {
                    ratioCmParPixel = tmp;
                    int[] TailleTerain = img.getTailleTerrain(tmp[0], tmp[1]);
                    UpdateTailleTerain(TailleTerain[0], TailleTerain[1]);
                    Logger.GlobalLogger.info("Taille terrain : " + TailleTerain[0] + " x " + TailleTerain[1] + " cm");
                }
            }
            else if (imageShow < img.getNumeroImg())
            {
                img.detectionGlyph(false);
            }
            //if (imgContour != null)
            //   imgReel.Invoke((affichageImg)imgAffiche, img.getImageContour().ToManagedImage(), imgContour);

            /* Merge des positions et dessin sur les lignes */
            if (imageShow < img.getNumeroImg())
            {
                mergePosition(img.getLstRobot());
                if (imageShow % nbImgColorTraiter == 0)
                {
                    List <Cub> lstCubTmp = img.getImageColor(LstHslFiltering);

                    /*List<Rectangle> r = new List<Rectangle>();
                     * foreach(Cub t in lstCubTmp)
                     * {
                     *  r.Add(t.rec);
                     * }
                     *
                     * img.dessineRectangle(r,Color.Blue);
                     */
                    mergePosition(lstCubTmp);
                    if (imgContour != null && img.ImgColor != null)
                    {
                        imgContour.Image = img.ImgColor.ToManagedImage();
                    }
                }
                if (polyline != null && polyline.Count > 0)
                {
                    img.dessinePolyline(polyline);
                }

                if (LstCube.Count > 0)
                {
                    img.dessineRectangle(getRectCube(), Color.White);
                }
                imageShow = img.getNumeroImg();

                if (imgReel != null)
                {
                    imgReel.Invoke((affichageImg)imgAffiche, img.getUnImgReel().ToManagedImage(), imgReel);
                }

                /*
                 * PointDessin p;
                 * for (int i = 0; i < LstZone.Count; i++)
                 * {
                 *  List<PolyligneDessin> lst = new List<PolyligneDessin>();
                 *  PolyligneDessin poly = new PolyligneDessin(Color.Green);
                 *  if (LstZone[i].A.X != 0 || LstZone[i].A.Y != 0)
                 *  {
                 *      p = new PointDessin();
                 *      p.X = LstZone[i].A.X;
                 *      p.Y = LstZone[i].A.Y;
                 *      poly.addPoint(p);
                 *  }
                 *  if (LstZone[i].B.X != 0 || LstZone[i].B.Y != 0)
                 *  {
                 *      p = new PointDessin();
                 *      p.X = LstZone[i].B.X;
                 *      p.Y = LstZone[i].B.Y;
                 *      poly.addPoint(p);
                 *  }
                 *  if (LstZone[i].C.X != 0 || LstZone[i].C.Y != 0)
                 *  {
                 *      p = new PointDessin();
                 *      p.X = LstZone[i].C.X;
                 *      p.Y = LstZone[i].C.Y;
                 *      poly.addPoint(p);
                 *  }
                 *  if (LstZone[i].D.X != 0 || LstZone[i].D.Y != 0)
                 *  {
                 *      p = new PointDessin();
                 *      p.X = LstZone[i].D.X;
                 *      p.Y = LstZone[i].D.Y;
                 *      poly.addPoint(p);
                 *      p = new PointDessin();
                 *      p.X = LstZone[i].A.X;
                 *      p.Y = LstZone[i].A.Y;
                 *      poly.addPoint(p);
                 *  }
                 *  lst.Add(poly);
                 *  img.dessinePolyline(lst);
                 * }
                 * if (imageShow % 2 == 0)
                 * {
                 *  ThreadColor = new Thread(detectionColor);
                 *  ThreadColor.Start(img);
                 * }
                 */
            }
            //Thread.Sleep(25);
        }
Exemplo n.º 3
0
        private void afficheImage(object sender, NewFrameEventArgs eventArgs,Image<Emgu.CV.Structure.Bgr,Byte> e)
        {
            /* Affiche l'image recu par la WebCam */
            // Instancie un Thread
            if (ListeImage[lastThread] == null)
            {
                ListeImage[lastThread] = new ImgWebCam((Bitmap)eventArgs.Frame.Clone(), nbImageCapture, tailleGlyph, new IntPtr(),e);
                //ListeImage[lastThread].imgRecu = e;
                lastThread++;
                lastThread %= nbThread;
            }

            //imgTraitment(new ImgWebCam((Bitmap)eventArgs.Frame.Clone(), nbImageCapture, tailleGlyph));
            // Traitement et Affichage des images
            try
            {
                if ((nbImageCapture % 10) == 0)
                {
                    FPS.Invoke((UpdateFPS)affichageFPS);
                }
            }
            catch { }

            nbImageCapture++;
        }
Exemplo n.º 4
0
        public void imgTraitment(ImgWebCam img)
        {
            /* Homographie du terrain et detection contours */
            System.DateTime milisss = System.DateTime.Now;

            String s = "Homographie = ";
            if (imageShow % nbImgColorTraiter == 0 && LstHslFiltering.Count > 0)
                img.homographie(LimiteTerrain, true);
            else
                img.homographie(LimiteTerrain, false);
             System.DateTime no = System.DateTime.Now;
             s += (no - milisss).Milliseconds;
             no = System.DateTime.Now;

            if (col !=null)
                addcouleur(img.getUnImgReel().ToManagedImage());

               // img.ColeurVersNB();
            s += "Detection contour = ";
            no = System.DateTime.Now;
            img.DetectionContour((short)numericUpDown1.Value);
            s += (DateTime.Now - no).Milliseconds ;
               // Logger.GlobalLogger.info("Duree Execution:   " + s);

            /* Reconnaissance des glyphs et taille du terrain si besoin */
            if (imageShow < img.getNumeroImg() && (ratioCmParPixel[0] == 1 || ratioCmParPixel[1] == 1))
            {
                double[] tmp = img.detectionGlyph(true);
                if (tmp != null)
                {
                    ratioCmParPixel = tmp;
                    int[] TailleTerain = img.getTailleTerrain(tmp[0], tmp[1]);
                    UpdateTailleTerain(TailleTerain[0], TailleTerain[1]);
                    Logger.GlobalLogger.info("Taille terrain : " + TailleTerain[0] + " x " + TailleTerain[1] + " cm");
                }
            }
            else if ( imageShow < img.getNumeroImg())
            {
                img.detectionGlyph(false);
            }
            //if (imgContour != null)
             //   imgReel.Invoke((affichageImg)imgAffiche, img.getImageContour().ToManagedImage(), imgContour);

            /* Merge des positions et dessin sur les lignes */
            if (imageShow < img.getNumeroImg())
            {
                mergePosition(img.getLstRobot());
                if (imageShow % nbImgColorTraiter == 0)
                {
                    List<Cub> lstCubTmp = img.getImageColor(LstHslFiltering);
                    /*List<Rectangle> r = new List<Rectangle>();
                    foreach(Cub t in lstCubTmp)
                    {
                        r.Add(t.rec);
                    }

                    img.dessineRectangle(r,Color.Blue);
                        */
                    mergePosition(lstCubTmp);
                    if (imgContour != null && img.ImgColor != null)
                        imgContour.Image = img.ImgColor.ToManagedImage();
                }
                if (polyline !=null && polyline.Count > 0)
                {
                    img.dessinePolyline(polyline);
                }

                if(LstCube.Count > 0 )
                        img.dessineRectangle(getRectCube(), Color.White);
                imageShow = img.getNumeroImg();

                if (imgReel != null)
                {
                    imgReel.Invoke((affichageImg)imgAffiche, img.getUnImgReel().ToManagedImage(), imgReel);
                }
                    /*
                     * PointDessin p;
                     * for (int i = 0; i < LstZone.Count; i++)
                    {
                        List<PolyligneDessin> lst = new List<PolyligneDessin>();
                        PolyligneDessin poly = new PolyligneDessin(Color.Green);
                        if (LstZone[i].A.X != 0 || LstZone[i].A.Y != 0)
                        {
                            p = new PointDessin();
                            p.X = LstZone[i].A.X;
                            p.Y = LstZone[i].A.Y;
                            poly.addPoint(p);
                        }
                        if (LstZone[i].B.X != 0 || LstZone[i].B.Y != 0)
                        {
                            p = new PointDessin();
                            p.X = LstZone[i].B.X;
                            p.Y = LstZone[i].B.Y;
                            poly.addPoint(p);
                        }
                        if (LstZone[i].C.X != 0 || LstZone[i].C.Y != 0)
                        {
                            p = new PointDessin();
                            p.X = LstZone[i].C.X;
                            p.Y = LstZone[i].C.Y;
                            poly.addPoint(p);
                        }
                        if (LstZone[i].D.X != 0 || LstZone[i].D.Y != 0)
                        {
                            p = new PointDessin();
                            p.X = LstZone[i].D.X;
                            p.Y = LstZone[i].D.Y;
                            poly.addPoint(p);
                            p = new PointDessin();
                            p.X = LstZone[i].A.X;
                            p.Y = LstZone[i].A.Y;
                            poly.addPoint(p);
                        }
                        lst.Add(poly);
                        img.dessinePolyline(lst);
                    }
                    if (imageShow % 2 == 0)
                    {
                        ThreadColor = new Thread(detectionColor);
                        ThreadColor.Start(img);
                    }
                    */

                }
                //Thread.Sleep(25);
        }