/// <summary> /// Update routine for first camera. /// </summary> /// <param name="sender"></param> /// <param name="image"></param> private void Camera1_Update(object sender, ref Bitmap image) { if (Executed) { Bitmap invrt = FilterInvert.Apply(image); FilterColor.ApplyInPlace(invrt); FilterSaturateLeft.ApplyInPlace(image); // create an instance of blob counter algorithm. BlobCounter objCounter = new BlobCounter(); objCounter.FilterBlobs = true; objCounter.CoupledSizeFiltering = true; objCounter.MinWidth = (int)(0.05f * Wdth); objCounter.MinHeight = (int)(0.05f * Hght); objCounter.MaxWidth = (int)(0.4f * Wdth); objCounter.MaxHeight = (int)(0.4f * Hght); // process image. objCounter.ProcessImage(invrt); ObjectsLeft = objCounter.GetObjectsRectangles(); ObjectDescLeft = new Descriptor[ObjectsLeft.Length]; // Draw lines. Graphics graphic = Graphics.FromImage(image); Pen pen = new Pen(Color.Yellow); pen.Width = 7; Font font = new Font("Courier", 14, FontStyle.Regular); SolidBrush brush = new SolidBrush(Color.Yellow); for (int a = 0; a < ObjectsLeft.Length; a++) { // Set descriptor of each detected object. SetDescriptor(ref ObjectDescLeft[a], ref ObjectsLeft[a], image); pen.Color = ObjectDescLeft[a].ColorMean; graphic.DrawRectangle(pen, ObjectsLeft[a]); graphic.DrawString(a.ToString() + " | " + ObjectDescLeft[a].ColorClass + "\n" + ObjectDescLeft[a].PercentR.ToString() + "%\n" + ObjectDescLeft[a].PercentG.ToString() + "%\n" + ObjectDescLeft[a].PercentB.ToString() + "%", font, brush, ObjectsLeft[a].X, ObjectsLeft[a].Y); } pen.Dispose(); graphic.Dispose(); } else { Graphics graphic = Graphics.FromImage(image); Pen pen = new Pen(Color.Yellow); pen.Width = 6; graphic.DrawRectangle(pen, new Rectangle(30, 30, Wdth - 60, Hght - 60)); pen.Width = 3; graphic.DrawRectangle(pen, new Rectangle(90, 90, Wdth - 180, Hght - 180)); pen.Dispose(); graphic.Dispose(); } }
private void Button_Belirt_Click(object sender, EventArgs e) { Bitmap image = (Bitmap)pictureBox1.Image.Clone(); ColorFiltering colorFilter = new ColorFiltering(); colorFilter.Red = new IntRange(red, (int)numericUpDownRed.Value); colorFilter.Green = new IntRange(green, (int)numericUpDownGreen.Value); colorFilter.Blue = new IntRange(blue, (int)numericUpDownBlue.Value); colorFilter.ApplyInPlace(image); BlobCounter blobCounter = new BlobCounter(); blobCounter.MinHeight = 100; blobCounter.MinWidth = 300; blobCounter.ObjectsOrder = ObjectsOrder.Size; blobCounter.ProcessImage(image); Rectangle[] rectangle = blobCounter.GetObjectsRectangles(); // bundan bir daha oluştur if (rectangle.Length > 0) //içerde beyazları tespit etmek için { size = rectangle[0].Size; //MessageBox.Show(size.ToString()); Rectangle objectt = rectangle[0]; Graphics graphic = Graphics.FromImage(image); using (Pen pen = new Pen(Color.Turquoise, 10)) { graphic.DrawRectangle(pen, objectt); } graphic.Dispose(); } pictureBox2.Image = image; }
private void doWork(object o) { var data = o as Params; lock (work_lock) { using (var filteredImage = new Bitmap(data.Image)) { backgroundFilter.ApplyInPlace(filteredImage); blobCounter.ProcessImage(filteredImage); } var rects = blobCounter.GetObjectsRectangles(); int rectsCount = rects.Count(); if (rectsCount == 0) { return; } var result = new List <Bitmap>(rectsCount); foreach (Rectangle rect in rects) { result.Add(data.Image.Crop(rect)); } RaiseDetectedBlobs(result); } }
private void sonYeni(object sender, NewFrameEventArgs eventArgs) { pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); Bitmap video = (Bitmap)eventArgs.Frame.Clone(); if (takip == 1) { ColorFiltering colorfilter = new ColorFiltering(); colorfilter.Red = new IntRange(Red, redMax); colorfilter.Green = new IntRange(Green, greenMax); colorfilter.Blue = new IntRange(Blue, blueMax); colorfilter.ApplyInPlace(video); BlobCounter blobCounter = new BlobCounter(); blobCounter.MinHeight = 20; blobCounter.MinWidth = 20; blobCounter.ObjectsOrder = ObjectsOrder.Size; blobCounter.ProcessImage(video); Rectangle[] rect = blobCounter.GetObjectsRectangles(); if (rect.Length > 0) { Rectangle obj = rect[0]; Graphics gr = Graphics.FromImage(video); using (Pen pen = new Pen(Color.White, 3)) { gr.DrawRectangle(pen, obj); } gr.Dispose(); } pictureBox2.Image = video; } }
private bool BlobCounter() { // lock image BitmapData bitmapData = _bitmap.LockBits(ImageLockMode.ReadWrite); // step 1 - turn background to black ColorFiltering colorFilter = new ColorFiltering(); colorFilter.Red = new IntRange(0, 64); colorFilter.Green = new IntRange(0, 64); colorFilter.Blue = new IntRange(0, 64); colorFilter.FillOutsideRange = false; colorFilter.ApplyInPlace(bitmapData); // step 2 - locating objects BlobCounter blobCounter = new BlobCounter(); blobCounter.FilterBlobs = true; blobCounter.MinHeight = 100; blobCounter.ProcessImage(bitmapData); Blob[] blobs = blobCounter.GetObjectsInformation(); _bitmap.UnlockBits(bitmapData); // step 3 - check objects' type and highlight SimpleShapeChecker shapeChecker = new SimpleShapeChecker(); using (var g = Graphics.FromImage(_bitmap)) using (Pen pen = new Pen(Color.Red, 2)) { for (int i = 0; i < blobs.Length; i++) { //Debug.WriteLine(String.Format("Blob {0}: W: {1} H:{2} ", i, blobs[i].Rectangle.Width, blobs[i].Rectangle.Height)); List <IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]); List <IntPoint> corners; if (shapeChecker.IsConvexPolygon(edgePoints, out corners)) { pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; g.DrawRectangle(pen, blobs[i].Rectangle); } } } RectRight = new Rectangle(); RectLeft = new Rectangle(); if (blobs.Length != 2 || blobs.Any(b => b.Rectangle.Width > 47)) { return(false); } else { RectLeft = blobs.OrderBy(b => b.Rectangle.Left).First().Rectangle; RectRight = blobs.OrderBy(b => b.Rectangle.Left).Last().Rectangle; return(true); } }
public static void FilterToRed(Bitmap img) { // create filter //EuclideanColorFiltering filter = new EuclideanColorFiltering(); //// set center colol and radius //filter.CenterColor = new RGB(180, 30, 30); //filter.Radius = 30; //// apply the filter //filter.ApplyInPlace(img); //HSLFiltering filter = new HSLFiltering(); //filter.Hue = new IntRange(0, 6); //these settings should works, if not //filter.Saturation = new Range(0.6f, 1f); //filter.Luminance = new Range(0.3f, 0.60f); ////filter ColorFiltering colorFilter = new ColorFiltering(); colorFilter.Red = new IntRange(140, 210); colorFilter.Green = new IntRange(0, 80); colorFilter.Blue = new IntRange(0, 80); colorFilter.ApplyInPlace(img); //BlobsFiltering filter = new BlobsFiltering(); //filter.CoupledSizeFiltering = true; //filter.MinWidth = 3; //filter.MinHeight = 3; //// apply the filter //filter.ApplyInPlace(img); }
public void ApplyRGB(Bitmap video, int minR, int maxR, int minG, int maxG, int minB, int maxB) { // set color ranges to keep filter.Red = new IntRange(minR, maxR); filter.Green = new IntRange(minG, maxG); filter.Blue = new IntRange(minB, maxB); filter.ApplyInPlace(video); }
public static void Face_Detection(Bitmap video) { ColorFiltering filter = new ColorFiltering(); // set color ranges to keep filter.Red = new IntRange(0, 75); filter.Green = new IntRange(0, 75); filter.Blue = new IntRange(10, 255); filter.ApplyInPlace(video); }
/// <summary> /// Méthode qui analyse les images envoyées par le client /// Repère les formes présentes, les découpe et les enregistre en ficiers distincts /// </summary> public void ProcessImage() { using (CamCapturer.CamCapturer cam = new CamCapturer.CamCapturer()) { Picture = cam.GetCapture(); Copy = cam.GetCapture(); } ShapeChecker = new SimpleShapeChecker(); ShapeAnalyser = new BlobCounter(); string date = DateTime.Now.Date.ToString("dMyyyy"); FolderName = string.Format("Kuhlschrank-{0}", date); ShapeAnalyser.FilterBlobs = true; ShapeAnalyser.MinHeight = 200; ShapeAnalyser.MinWidth = 500; Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), FolderName)); BitmapData bitData = Picture.LockBits(new Rectangle(0, 0, Picture.Width, Picture.Height), ImageLockMode.ReadWrite, Picture.PixelFormat); ColorFiltering filter = new ColorFiltering(); filter.Red = new IntRange(0, 64); filter.Green = new IntRange(0, 64); filter.Blue = new IntRange(0, 64); filter.FillOutsideRange = false; filter.ApplyInPlace(bitData); ShapeAnalyser.ProcessImage(bitData); Blob[] blobs = ShapeAnalyser.GetObjectsInformation(); Picture.UnlockBits(bitData); for (int i = 0; i < blobs.Length; i++) { List <IntPoint> edgePoints = ShapeAnalyser.GetBlobsEdgePoints(blobs[i]); List <IntPoint> corners; ShapeChecker.IsConvexPolygon(edgePoints, out corners); IntPoint pt0 = corners[0]; IntPoint pt1 = corners[1]; IntPoint pt2 = corners[2]; double width = Math.Sqrt(Math.Pow(pt1.X - pt0.X, 2) + Math.Pow(pt1.Y - pt0.Y, 2)); double height = Math.Sqrt(Math.Pow(pt2.X - pt1.X, 2) + Math.Pow(pt2.Y - pt1.Y, 2)); Rectangle crop = new Rectangle(corners[0].X, corners[1].Y, (int)width + 50, (int)height + 50); Bitmap target = new Bitmap(crop.Width, crop.Height); using (Graphics gr = Graphics.FromImage(target)) gr.DrawImage(Copy, new Rectangle(0, 0, target.Width, target.Height), crop, GraphicsUnit.Pixel); target.Save(string.Format(@"{0}\{1}\crop{2}.jpg", Path.GetTempPath(), FolderName, i)); } }
public static void FilterColors(ref Bitmap bm, IntRange red, IntRange green, IntRange blue) { ColorFiltering colorFilter = new ColorFiltering { Red = red, Green = green, Blue = blue }; colorFilter.ApplyInPlace(bm); }
public static Bitmap FilterImage(Bitmap originalBitmap) { var bitmap = new Bitmap(originalBitmap); var imagem = bitmap.Clone(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb); var colorFilter = new ColorFiltering(); colorFilter.FillColor = new RGB(255, 255, 255); colorFilter.Red = colorFilter.Green = colorFilter.Blue = new IntRange(0, 40); colorFilter.ApplyInPlace(bitmap); bitmap = new FiltersSequence(colorFilter, new Invert(), new Erosion()).Apply(imagem); return(bitmap); }
public Bitmap FindTextBitmap() { Bitmap textBmp = new Bitmap(sets.BmpTextWidth, sets.BmpTextHeight); textBmp = sourceImage.Clone(new Rectangle(match.X + sets.TextMarginRight, match.Y + sets.TextMarginTop, sets.BmpTextWidth, sets.BmpTextHeight), PixelFormat.Format24bppRgb); Grayscale gs = new Grayscale(0.2125, 0.7154, 0.0721); SISThreshold th = new SISThreshold(); BinaryErosion3x3 bs = new BinaryErosion3x3(); ColorFiltering cf = new ColorFiltering(); cf.Red = new IntRange(90, 160); cf.Green = new IntRange(55, 110); cf.Blue = new IntRange(15, 85); cf.ApplyInPlace(textBmp); //for (int i = 0; i < textBmp.Width; i++) //{ // for (int j = 0; j < textBmp.Height; j++) // { // if (((textBmp.GetPixel(i, j).R > 95) && (textBmp.GetPixel(i, j).R < 155)) && ((textBmp.GetPixel(i, j).G > 60) && (textBmp.GetPixel(i, j).G > 105)) && ((textBmp.GetPixel(i, j).B > 20 && (textBmp.GetPixel(i, j).B < 80)))) // { // textBmp.SetPixel(i, j, Color.Black); // } // else // { // textBmp.SetPixel(i, j, Color.White); // } // } //} BilateralSmoothing bss = new BilateralSmoothing(); bss.KernelSize = 7; bss.SpatialFactor = 5; bss.ColorFactor = 30; bss.ColorPower = 0.5; bss.ApplyInPlace(textBmp); textBmp = gs.Apply(textBmp); th.ApplyInPlace(textBmp); //bs.ApplyInPlace(textBmp); //erose.ApplyInPlace(textBmp); return(textBmp); }
private Bitmap rdraw() { Bitmap result = (Bitmap)mf.pictureBox.Image; ColorFiltering cf = new ColorFiltering(); cf.Red = new IntRange(redmin.Value, redmax.Value); cf.Green = new IntRange(greenmin.Value, greenmax.Value); cf.Blue = new IntRange(bluemin.Value, bluemax.Value); cf.ApplyInPlace(result); return(result); }
void FinalVideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap image = (Bitmap)eventArgs.Frame.Clone(); Bitmap image1 = (Bitmap)eventArgs.Frame.Clone(); pictureBox1.Image = image; try { //kırmızı if (radioButton1.Checked) { //ColorFilter'in yapildigi yer ColorFiltering filter = new ColorFiltering(); int a1 = int.Parse(textBox1.Text); int a2 = int.Parse(textBox2.Text); int a3 = int.Parse(textBox3.Text); int b1 = int.Parse(textBox4.Text); int b2 = int.Parse(textBox5.Text); int b3 = int.Parse(textBox6.Text); filter.Red = new IntRange(a1, b1); filter.Green = new IntRange(a2, b2); filter.Blue = new IntRange(a3, b3); filter.ApplyInPlace(image1); //Görüntü üzerinde algilanan renk kare icine aliniyor cevresiniciz(image1); } //mavi if (radioButton2.Checked) { int a1 = int.Parse(textBox7.Text); int a2 = int.Parse(textBox8.Text); int a3 = int.Parse(textBox9.Text); // Euclidean Color Filterin yapildigi yer EuclideanColorFiltering filter = new EuclideanColorFiltering(); // Algilanacak renk belirleniyor ve orta noktasi belirleniyor filter.CenterColor = new RGB(Color.FromArgb(a1, a2, a3)); filter.Radius = 50; // filtre calistiriliyor filter.ApplyInPlace(image1); //Görüntü üzerinde algilanan rengi cevrcevelemek veya hedeflemek icin gerekli Methodlar cevresiniciz(image1); //hedefal(image); } } catch { } }
public Bitmap CutImage(System.Drawing.Image imgOrigin) { Bitmap bmp = (Bitmap)imgOrigin; GetBrightness(bmp); Bitmap bmpAux = bmp.Clone(new Rectangle(0, 0, bmp.Width, bmp.Height), PixelFormat.Format32bppRgb); ColorFiltering cFilter = new ColorFiltering(); cFilter.Red = new IntRange(170, 255); cFilter.Green = new IntRange(100, 255); cFilter.Blue = new IntRange(80, 255); cFilter.FillOutsideRange = false; cFilter.ApplyInPlace(bmpAux); return(bmpAux); }
public Bitmap DetectJupiter(Bitmap image) { ColorFiltering cf = new ColorFiltering(new IntRange(0, 255), new IntRange(76, 165), new IntRange(64, 154)); cf.FillOutsideRange = false; cf.ApplyInPlace(image); BlobCounter bc = new BlobCounter(); bc.FilterBlobs = true; bc.MinHeight = 50; bc.MinWidth = 50; bc.ProcessImage(image); Blob[] blobs = bc.GetObjectsInformation(); Console.WriteLine(blobs.Count()); return(image); }
private void colourFiltering() // Colour filtering { // Declare variables Bitmap bitmap = new Bitmap(pictureBox1.Image); // create filter ColorFiltering filter = new ColorFiltering(); // set color ranges to keep filter.Red = new IntRange(100, 255); filter.Green = new IntRange(0, 75); filter.Blue = new IntRange(0, 75); // apply the filter filter.ApplyInPlace(bitmap); pictureBox1.Image = bitmap; }
public static Bitmap buscaRectangulos(Bitmap bitmap) { Blob[] blobs; Rectangle area = new Rectangle(0, 0, bitmap.Width, bitmap.Height); // lock image BitmapData bitmapData = bitmap.LockBits(area, ImageLockMode.ReadWrite, bitmap.PixelFormat); // Filtramos la imagen para determinar hasts cuando de ROJO, VERDE Y AZUL se permitiráanalizar ColorFiltering colorFilter = new ColorFiltering(); colorFilter.Red = new IntRange(0, 104); colorFilter.Green = new IntRange(0, 104); colorFilter.Blue = new IntRange(0, 104); colorFilter.FillOutsideRange = false; colorFilter.ApplyInPlace(bitmapData); // Localizamos objetos en la imagen BlobCounter blobCounter = new BlobCounter(); blobCounter.FilterBlobs = true; blobCounter.MinHeight = 15; blobCounter.MinWidth = 15; blobCounter.ProcessImage(bitmapData); blobs = blobCounter.GetObjectsInformation(); bitmap.UnlockBits(bitmapData); // step 3 -check objects' type and highlight SimpleShapeChecker shapeChecker = new SimpleShapeChecker(); Graphics g = Graphics.FromImage(bitmap); Pen yellowPen = new Pen(Color.Yellow, 2); // Para cada figuura encontrada for (int i = 0, n = blobs.Length; i < n; i++) { List <IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]); List <IntPoint> corners; // Cuadrado if (shapeChecker.IsQuadrilateral(edgePoints, out corners)) {//Obtenemos cuantas esquinas tiene el shape PolygonSubType subType = shapeChecker.CheckPolygonSubType(corners); //Pintamos las áreas detectadas areaInteres(g, corners); } } //yellowPen.Dispose(); g.Dispose(); // put new image to clipboard Clipboard.SetDataObject(bitmap); // and to picture box return(bitmap); }
private void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs) { //pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); video = (Bitmap)eventArgs.Frame.Clone(); Bitmap video2 = (Bitmap)eventArgs.Frame.Clone(); // this is mode 1 if (mode == 1) { // ColorFiltering colorfilter = new ColorFiltering(); colorfilter.Red = new IntRange(Red, (int)numericUpDownRed.Value); colorfilter.Green = new IntRange(Green, (int)numericUpDownGreen.Value); colorfilter.Blue = new IntRange(Blue, (int)numericUpDownBlue.Value); colorfilter.ApplyInPlace(video2); //BlobCounter BlobCounter blobcounter = new BlobCounter(); blobcounter.MinHeight = 20; blobcounter.MinWidth = 20; blobcounter.ObjectsOrder = ObjectsOrder.Size; blobcounter.ProcessImage(video2); Rectangle[] rect = blobcounter.GetObjectsRectangles(); if (rect.Length > 0) { Rectangle target = rect[0]; Graphics graphic = Graphics.FromImage(video2); // To apply Grapghics on video2, that is, pictureBox2. g = Graphics.FromImage(video2); using (Pen pen = new Pen(Color.White, 3)) { graphic.DrawRectangle(pen, target); g.DrawString("Target Located !", new Font("Arial", 20), new SolidBrush(Color.White), new PointF(2, 2)); // to demonstrate 'recognition' of target. g.Dispose(); } graphic.Dispose(); } pictureBox2.Image = video2; } pictureBox1.Image = video; }
private void GetPicBlobs() { // create filter ColorFiltering filter = new ColorFiltering(); // set color ranges to keep filter.Red = new IntRange(190, 255); filter.Green = new IntRange(200, 255); filter.Blue = new IntRange(180, 255); // apply the filter filter.ApplyInPlace(GameZonePic); // locate objects using blob counter BlobCounter = new BlobCounter(); BlobCounter.ProcessImage(GameZonePic); Blobs = BlobCounter.GetObjectsInformation(); }
/// <summary> /// Extracts Images from smallSize CameraImage, No feed Back given during process /// </summary> /// <param name="SmallCameraImage"></param> /// <param name="OMRSpecsSheetAddress"></param> /// <returns>Formated, Right sized OMR Sheet</returns> private Bitmap flatten(Bitmap bmp, int fillint, int contint) { // step 1 - turn background to black ColorFiltering colorFilter = new ColorFiltering(); colorFilter.Red = new IntRange(0, fillint); colorFilter.Green = new IntRange(0, fillint); colorFilter.Blue = new IntRange(0, fillint); colorFilter.FillOutsideRange = false; colorFilter.ApplyInPlace(bmp); AForge.Imaging.Filters.ContrastCorrection Contrast = new ContrastCorrection(contint); AForge.Imaging.Filters.Invert invert = new Invert(); AForge.Imaging.Filters.ExtractChannel extract_channel = new ExtractChannel(0); AForge.Imaging.Filters.Threshold thresh_hold = new Threshold(44); bmp = invert.Apply(thresh_hold.Apply(extract_channel.Apply(Contrast.Apply(bmp)))); return(bmp); }
private void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs) { video = (Bitmap)eventArgs.Frame.Clone(); Bitmap video2 = (Bitmap)eventArgs.Frame.Clone(); switch (mode) { case 2: g = Graphics.FromImage(video2); g.DrawString(degisken.ToString(), new Font("Arial", 20), Brushes.Cyan, new PointF(2, 2)); g.Dispose(); break; case 1: ColorFiltering colorFilter = new ColorFiltering(); colorFilter.Red = new IntRange(red, (int)numericUpDownRed.Value); colorFilter.Green = new IntRange(green, (int)numericUpDownGreen.Value); colorFilter.Blue = new IntRange(blue, (int)numericUpDownBlue.Value); colorFilter.ApplyInPlace(video2); BlobCounter blobCounter = new BlobCounter(); blobCounter.MinHeight = 20; blobCounter.MinWidth = 20; blobCounter.ObjectsOrder = ObjectsOrder.Size; blobCounter.ProcessImage(video2); Rectangle[] rect = blobCounter.GetObjectsRectangles(); if (rect.Length > 0) { Rectangle objectt = rect[0]; Graphics graph = Graphics.FromImage(video2); using (Pen pen = new Pen(Color.White, 3)) { graph.DrawRectangle(pen, objectt); } graph.Dispose(); } pictureBox2.Image = video2; break; } pictureBox1.Image = video; //pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); }
private void kullanilacakcihaz_NewFrame(object sender, NewFrameEventArgs eventArgs) { video = (Bitmap)eventArgs.Frame.Clone(); Bitmap video2 = (Bitmap)eventArgs.Frame.Clone(); switch (mode) { case 1: { // ColorFiltering colorfiller = new ColorFiltering(); colorfiller.Red = new IntRange(Red, (int)numericUpDown1.Value); colorfiller.Green = new IntRange(Green, (int)numericUpDown2.Value); colorfiller.Blue = new IntRange(Blue, (int)numericUpDown3.Value); colorfiller.ApplyInPlace(video2); // BlobCounter blobcounter = new BlobCounter(); blobcounter.MinHeight = 20; blobcounter.MinWidth = 20; blobcounter.ObjectsOrder = ObjectsOrder.Size; blobcounter.ProcessImage(video2); Rectangle[] rect = blobcounter.GetObjectsRectangles(); if (rect.Length > 0) { Rectangle objec = rect[0]; Graphics graphic = Graphics.FromImage(video2); using (Pen pen = new Pen(Color.White, 3)) { graphic.DrawRectangle(pen, objec); g = Graphics.FromImage(video); g.DrawRectangle(pen, objec); objectX = objec.X + (objec.Width / 2); objectY = objec.Y + (objec.Height / 2); g.DrawString(objectX.ToString() + "X" + objectY.ToString(), new Font("Arial", 12), Brushes.Red, new System.Drawing.Point(1, 1)); g.Dispose(); } graphic.Dispose(); } } break; } pictureBox1.Image = video; }
private void doWork(object o) { var data = o as WorkData; lock (dwlock) { using (var filteredImage = new Bitmap(data.Blob)) { colorFiltering.ApplyInPlace(filteredImage); blobCounter.ProcessImage(filteredImage); } if (blobCounter.ObjectsCount == 0) { return; } var listBlobs = new List <WorkData>(); var rects = blobCounter.GetObjectsRectangles(); foreach (Rectangle r in rects) { Rectangle rct = new Rectangle( r.X + 1, r.Y + 1, r.Width - 2, r.Height - 4 ); Bitmap blobBmp = data.Blob.Clone(rct, PixelFormat.Format8bppIndexed); var info = new WorkData { Blob = blobBmp }; listBlobs.Add(info); } RaiseBlobsFound(listBlobs); } }
private void button4_Click(object sender, EventArgs e) { for (int i = 0; i < 305; i++) { Bitmap image = (Bitmap)System.Drawing.Image.FromFile("C:\\Users\\Halil\\Desktop\\frames\\image" + i + ".jpg"); Bitmap resim = new Bitmap(image); Bitmap resimson = new Bitmap(image); ColorFiltering filter = new ColorFiltering(); filter.Red = new IntRange(40, 87); filter.Green = new IntRange(43, 85); filter.Blue = new IntRange(63, 95); filter.ApplyInPlace(resim); nesnebul(resim, i, resimson); } MessageBox.Show("Yeni Resimler Oluşturuldu"); button3.Enabled = true; }
public Boolean ContainOrange(Bitmap bitmap) { ColorFiltering RedFilter = new ColorFiltering(); RedFilter.Red = new IntRange(100, 255); RedFilter.Green = new IntRange(0, 100); RedFilter.Blue = new IntRange(0, 100); RedFilter.ApplyInPlace(bitmap); AForge.Imaging.BlobCounter blobCounterGreen = new AForge.Imaging.BlobCounter(); blobCounterGreen.FilterBlobs = true; blobCounterGreen.MinHeight = 5; blobCounterGreen.MinWidth = 5; blobCounterGreen.ProcessImage(bitmap); AForge.Imaging.Blob[] blobsGreen = blobCounterGreen.GetObjectsInformation(); SimpleShapeChecker shapeCheckerGreen = new SimpleShapeChecker(); if (blobsGreen.Length > 0) { return(true); } return(false); }
public List <List <System.Drawing.Point> > GetEdges() { // lock image BitmapData bitmapData = bitmap.LockBits( new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, bitmap.PixelFormat); // step 1 - turn background to black ColorFiltering colorFilter = new ColorFiltering(); colorFilter.Red = new IntRange(0, 64); colorFilter.Green = new IntRange(0, 64); colorFilter.Blue = new IntRange(0, 64); colorFilter.FillOutsideRange = false; colorFilter.ApplyInPlace(bitmapData); // step 2 - locating objects BlobCounter blobCounter = new BlobCounter(); blobCounter.FilterBlobs = true; blobCounter.MinHeight = 5; blobCounter.MinWidth = 5; blobCounter.ProcessImage(bitmapData); Blob[] blobs = blobCounter.GetObjectsInformation(); bitmap.UnlockBits(bitmapData); List <List <System.Drawing.Point> > edges = new List <List <System.Drawing.Point> >(); for (int i = 0; i < blobs.Length; i++) { List <IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]); List <System.Drawing.Point> edgePointsNormal = ToPointsArray(edgePoints); edges.Add(edgePointsNormal); } return(edges); }
//***************************************** void cam_goruntu_new_frame(object sender, NewFrameEventArgs eventArgs) { Bitmap image = (Bitmap)eventArgs.Frame.Clone(); Bitmap image1 = (Bitmap)eventArgs.Frame.Clone(); pictureBox1.Image = image; if (radioButton1.Checked == true) { ColorFiltering filter = new ColorFiltering(); filter.Red = new IntRange(255, 0); filter.Green = new IntRange(0, 75); filter.Blue = new IntRange(0, 75); filter.ApplyInPlace(image1); nesnebul(image1); } if (radioButton2.Checked == true) { ColorFiltering filter = new ColorFiltering(); filter.Red = new IntRange(0, 75); filter.Green = new IntRange(0, 75); filter.Blue = new IntRange(100, 255); filter.ApplyInPlace(image1); nesnebul(image1); } if (radioButton3.Checked == true) { ColorFiltering filter = new ColorFiltering(); filter.Red = new IntRange(80, 255); filter.Green = new IntRange(80, 255); filter.Blue = new IntRange(30, 80); filter.ApplyInPlace(image1); nesnebul(image1); } }
public static Bitmap PrepareForObjectDetection(this System.Drawing.Image bmpOriginalImage, int whiteLevel, bool overrideWhite) { Bitmap bmp = (Bitmap)bmpOriginalImage.Clone(); ColorFiltering colorFilter = new ColorFiltering(); int white = whiteLevel; if (!overrideWhite) { white = PreprocessingHelper.GetWhiteLevel(bmp); } colorFilter.Red = new IntRange(0, white / 3); colorFilter.Green = new IntRange(0, white / 3); colorFilter.Blue = new IntRange(0, white / 3); colorFilter.FillOutsideRange = true; colorFilter.FillColor = new RGB(Color.White); colorFilter.ApplyInPlace(bmp); ExtractChannel extract_channel = new ExtractChannel(0); bmp = extract_channel.Apply(bmp); Invert invert = new Invert(); invert.ApplyInPlace(bmp); Threshold threshholdFilter = new Threshold(10); threshholdFilter.ApplyInPlace(bmp); bmp = bmp.Clone(new Rectangle(0, 0, bmp.Width, bmp.Height), PixelFormat.Format24bppRgb); return(bmp); }
/// <summary> /// The ColorFilter is applied with the ColorRange from the background /// </summary> public void FilterImgBgSelect() { // CREATE NEW BITMAP IMAGE this.bitmap = new Bitmap((Bitmap)pictureBox.Image); // LOCK IMAGE this.bitmapData = bitmap.LockBits( new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, bitmap.PixelFormat); // CREATE NEW FILTER ColorFiltering colorFilter = new ColorFiltering(); // SET COLOR RANGE FOR BACKGROUND colorFilter.Red = RangeRed; colorFilter.Green = RangeGreen; colorFilter.Blue = RangeBlue; // DONT FILL OUTSIDE RANGE colorFilter.FillOutsideRange = false; // APPLY FILTER ON IMAGE colorFilter.ApplyInPlace(bitmapData); }