/// <summary> /// Загружаем картинку /// </summary> private void openFile(object parameters) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = ".jpg, .jpeg, .gif, .bmp, .png|*.jpg;*.jpeg;*.gif;*.bmp;*.png|*.*|*.*"; ofd.Multiselect = false; ofd.InitialDirectory = @"D:\_Downloads_\капча\"; if (ofd.ShowDialog() == true) { FileName = ofd.FileName; ImgOriginal = new Bitmap(_fileName); ImgSkeletonization = Skeletonization.Run(_imgOriginal); } }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); bool valueA = false; DA.GetData(2, ref valueA); int valueB = 1; DA.GetData(3, ref valueB); int valueC = 1; DA.GetData(4, ref valueC); Filter filter = new Filter(); switch ((FilterModes)mode) { case FilterModes.Closing: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Closing(); image.Filters.Add(new Closing()); break; case FilterModes.Dilation: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Dilation(); image.Filters.Add(new Dilation()); break; case FilterModes.DilationBinary: SetParameter(2); SetParameter(3); SetParameter(4); filter = new DilationBinary(); image.Filters.Add(new DilationBinary()); break; case FilterModes.Erosion: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Erosion(); image.Filters.Add(new Erosion()); break; case FilterModes.ErosionBinary: SetParameter(2); SetParameter(3); SetParameter(4); filter = new ErosionBinary(); image.Filters.Add(new ErosionBinary()); break; case FilterModes.HatBottom: SetParameter(2); SetParameter(3); SetParameter(4); filter = new HatBottom(); image.Filters.Add(new HatBottom()); break; case FilterModes.HatTop: SetParameter(2); SetParameter(3); SetParameter(4); filter = new HatTop(); image.Filters.Add(new HatTop()); break; case FilterModes.Opening: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Opening(); image.Filters.Add(new Opening()); break; case FilterModes.Skeletonization: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Skeletonization(); image.Filters.Add(new Skeletonization()); break; case FilterModes.SkeletonizationZhangSuen: SetParameter(2); SetParameter(3); SetParameter(4); filter = new SkeletonizationZhangSuen(); image.Filters.Add(new SkeletonizationZhangSuen()); break; case FilterModes.HorizontalBands: SetParameter(2, "B", "Borders", "Process gaps"); SetParameter(3, "G", "Gap", "The pixel gap size"); SetParameter(4); filter = new BandsHorizontal(valueB, valueA); image.Filters.Add(new BandsHorizontal(valueB, valueA)); break; case FilterModes.VerticalBands: SetParameter(2, "B", "Borders", "Process gaps"); SetParameter(3, "G", "Gap", "The pixel gap size"); SetParameter(4); filter = new BandsVertical(valueB, valueA); image.Filters.Add(new BandsVertical(valueB, valueA)); break; case FilterModes.FillHoles: SetParameter(2, "B", "Borders", "Process gaps"); SetParameter(3, "W", "Width", "The pixel threshold"); SetParameter(4, "H", "Height", "The pixel threshold"); filter = new FillHoles(valueC, valueB, valueA); image.Filters.Add(new FillHoles(valueC, valueB, valueA)); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }