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++; }
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); }
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++; }
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); }