Class AutoMaskingGraphCutOptions

Class AutoMaskingGraphCutOptions

Nome do espaço: Aspose.Imaging.Masking.Options Assembleia: Aspose.Imaging.dll (25.4.0)

As opções de maquiagem automática do GraphCut.

public class AutoMaskingGraphCutOptions : GraphCutMaskingOptions

Inheritance

object MaskingOptions GraphCutMaskingOptions AutoMaskingGraphCutOptions

Membros herdados

GraphCutMaskingOptions.FeatheringRadius , MaskingOptions.BackgroundObjectNumber , MaskingOptions.Method , MaskingOptions.Args , MaskingOptions.ExportOptions , MaskingOptions.MaskingArea , MaskingOptions.Decompose , MaskingOptions.BackgroundReplacementColor , object.GetType() , object.MemberwiseClone() , object.ToString() , object.Equals(object?) , object.Equals(object?, object?) , object.ReferenceEquals(object?, object?) , object.GetHashCode()

Examples

Esconder o resultado de mascaramento de imagem com feathering com base no tamanho da imagem. mascaramento de imagem é realizado usando auto-calculado danos padrão. A propriedade Args de AutoMaskingGraphCutOptions pode ser omitida como danos padrão são colocados lá no final.

MaskingResult[] results;
                                                                                                                                                                                                                                                               using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                                                   AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                                                                                                   CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                   FeatheringRadius = (Math.Max(image.Width, image.Height) / 500) + 1,
                                                                                                                                                                                                                                                                                                                   Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                   Decompose = false,
                                                                                                                                                                                                                                                                                                                   ExportOptions =
                                                                                                                                                                                                                                                                                                                       new PngOptions()
                                                                                                                                                                                                                                                                                                                           {
                                                                                                                                                                                                                                                                                                                               ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                               Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                           },
                                                                                                                                                                                                                                                                                                                   BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                   };

                                                                                                                                                                                                                                                                   results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                               }

                                                                                                                                                                                                                                                               using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                                                   resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                               }

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem. mascaramento de imagem é realizado usando automaticamente calculados padrões. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                  MaskingResult[] results;
                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                      AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                      AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                      CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                      FeatheringRadius = (Math.Max(image.Width, image.Height) / 500) + 1,
                                                                                                                                                                                                                                                                                                                                      Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                      Decompose = false,
                                                                                                                                                                                                                                                                                                                                      ExportOptions =
                                                                                                                                                                                                                                                                                                                                          new PngOptions()
                                                                                                                                                                                                                                                                                                                                              {
                                                                                                                                                                                                                                                                                                                                                  ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                  Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                              },
                                                                                                                                                                                                                                                                                                                                      BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                      };

                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                  }</assumedobjectdata></assumedobjectdata>

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem e re-uso de opções de mascaramento para a nova iteração de mascaramento. mascaramento de imagem é realizado usando automaticamente calculados estragos padrão. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, estragos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  AutoMaskingGraphCutOptions options;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // Re-using AutoMaskingGraphCutOptions there is no need to perform default strokes calculations second time.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.CalculateDefaultStrokes = false;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both default strokes and ObjectsPoints in the Args property of AutoMaskingArgs are provided, Point arrays are end up combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // The first ObjectsPoints array is considered to be a background points array and 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // the second ObjectsPoints array is considered to be a foreground points array.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both DefaultObjectsRectangles and ObjectsRectangles in the Args property of AutoMaskingArgs are provided, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // only the array from the Args is being used.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(100, 100), new Point(150, 100) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(500, 200) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsRectangles = new Rectangle[]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          new Rectangle(100, 100, 300, 300), 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }</assumedobjectdata></assumedobjectdata>

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem, modificação dos impactos padrão obtidos e usá-lo para a nova iteração de mascaramento. O mascaramento de imagem é realizado usando os impactos padrão calculados automaticamente. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, os impactos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada usando a nova instância GraphCutMaskingOptions.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                AutoMaskingGraphCutOptions options;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[5] = new Point(100, 100);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[15] = new Point(150, 100);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedForegroundStrokes[1] = new Point(500, 200);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions = new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedBackgroundStrokes,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedForegroundStrokes
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsRectangles = appliedObjectRectangles
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(graphCutOptions);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }</assumedobjectdata></assumedobjectdata>

Constructors

AutoMaskingGraphCutOptions()

public AutoMaskingGraphCutOptions()

Properties

AssumedObjects

Recebe ou coloca os objetos assumidos.

public List<assumedobjectdata> AssumedObjects { get; set; }

Valor da propriedade

List e o PT; AssumedObjectData >

Examples

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem. mascaramento de imagem é realizado usando automaticamente calculados padrões. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                  MaskingResult[] results;
                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                      AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                      AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                      CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                      FeatheringRadius = (Math.Max(image.Width, image.Height) / 500) + 1,
                                                                                                                                                                                                                                                                                                                                      Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                      Decompose = false,
                                                                                                                                                                                                                                                                                                                                      ExportOptions =
                                                                                                                                                                                                                                                                                                                                          new PngOptions()
                                                                                                                                                                                                                                                                                                                                              {
                                                                                                                                                                                                                                                                                                                                                  ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                  Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                              },
                                                                                                                                                                                                                                                                                                                                      BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                      };

                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                  }</assumedobjectdata></assumedobjectdata>

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem e re-uso de opções de mascaramento para a nova iteração de mascaramento. mascaramento de imagem é realizado usando automaticamente calculados estragos padrão. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, estragos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  AutoMaskingGraphCutOptions options;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // Re-using AutoMaskingGraphCutOptions there is no need to perform default strokes calculations second time.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.CalculateDefaultStrokes = false;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both default strokes and ObjectsPoints in the Args property of AutoMaskingArgs are provided, Point arrays are end up combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // The first ObjectsPoints array is considered to be a background points array and 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // the second ObjectsPoints array is considered to be a foreground points array.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both DefaultObjectsRectangles and ObjectsRectangles in the Args property of AutoMaskingArgs are provided, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // only the array from the Args is being used.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(100, 100), new Point(150, 100) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(500, 200) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsRectangles = new Rectangle[]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          new Rectangle(100, 100, 300, 300), 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }</assumedobjectdata></assumedobjectdata>

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem, modificação dos impactos padrão obtidos e usá-lo para a nova iteração de mascaramento. O mascaramento de imagem é realizado usando os impactos padrão calculados automaticamente. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, os impactos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada usando a nova instância GraphCutMaskingOptions.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                AutoMaskingGraphCutOptions options;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[5] = new Point(100, 100);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[15] = new Point(150, 100);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedForegroundStrokes[1] = new Point(500, 200);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions = new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedBackgroundStrokes,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedForegroundStrokes
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsRectangles = appliedObjectRectangles
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(graphCutOptions);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }</assumedobjectdata></assumedobjectdata>

CalculateDefaultStrokes

Recebe ou coloca um valor indicando se os impactos padrão devem ser calculados.

public bool CalculateDefaultStrokes { get; set; }

Valor da propriedade

bool

Examples

Esconder o resultado de mascaramento de imagem com feathering com base no tamanho da imagem. mascaramento de imagem é realizado usando auto-calculado danos padrão. A propriedade Args de AutoMaskingGraphCutOptions pode ser omitida como danos padrão são colocados lá no final.

MaskingResult[] results;
                                                                                                                                                                                                                                                               using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                                                   AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                                                                                                   CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                   FeatheringRadius = (Math.Max(image.Width, image.Height) / 500) + 1,
                                                                                                                                                                                                                                                                                                                   Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                   Decompose = false,
                                                                                                                                                                                                                                                                                                                   ExportOptions =
                                                                                                                                                                                                                                                                                                                       new PngOptions()
                                                                                                                                                                                                                                                                                                                           {
                                                                                                                                                                                                                                                                                                                               ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                               Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                           },
                                                                                                                                                                                                                                                                                                                   BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                   };

                                                                                                                                                                                                                                                                   results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                               }

                                                                                                                                                                                                                                                               using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                               {
                                                                                                                                                                                                                                                                   resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                               }

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem. mascaramento de imagem é realizado usando automaticamente calculados padrões. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                  MaskingResult[] results;
                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                      AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                      AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                      CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                      FeatheringRadius = (Math.Max(image.Width, image.Height) / 500) + 1,
                                                                                                                                                                                                                                                                                                                                      Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                      Decompose = false,
                                                                                                                                                                                                                                                                                                                                      ExportOptions =
                                                                                                                                                                                                                                                                                                                                          new PngOptions()
                                                                                                                                                                                                                                                                                                                                              {
                                                                                                                                                                                                                                                                                                                                                  ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                  Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                              },
                                                                                                                                                                                                                                                                                                                                      BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                      };

                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                  }</assumedobjectdata></assumedobjectdata>

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem e re-uso de opções de mascaramento para a nova iteração de mascaramento. mascaramento de imagem é realizado usando automaticamente calculados estragos padrão. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, estragos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  AutoMaskingGraphCutOptions options;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // Re-using AutoMaskingGraphCutOptions there is no need to perform default strokes calculations second time.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.CalculateDefaultStrokes = false;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both default strokes and ObjectsPoints in the Args property of AutoMaskingArgs are provided, Point arrays are end up combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // The first ObjectsPoints array is considered to be a background points array and 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // the second ObjectsPoints array is considered to be a foreground points array.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both DefaultObjectsRectangles and ObjectsRectangles in the Args property of AutoMaskingArgs are provided, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // only the array from the Args is being used.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(100, 100), new Point(150, 100) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(500, 200) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsRectangles = new Rectangle[]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          new Rectangle(100, 100, 300, 300), 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }</assumedobjectdata></assumedobjectdata>

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem, modificação dos impactos padrão obtidos e usá-lo para a nova iteração de mascaramento. O mascaramento de imagem é realizado usando os impactos padrão calculados automaticamente. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, os impactos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada usando a nova instância GraphCutMaskingOptions.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                AutoMaskingGraphCutOptions options;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[5] = new Point(100, 100);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[15] = new Point(150, 100);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedForegroundStrokes[1] = new Point(500, 200);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions = new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedBackgroundStrokes,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedForegroundStrokes
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsRectangles = appliedObjectRectangles
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(graphCutOptions);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }</assumedobjectdata></assumedobjectdata>

DefaultBackgroundStrokes

Obtenha os impactos de fundo padrão.

public Point[] DefaultBackgroundStrokes { get; }

Valor da propriedade

Point [ ]

Examples

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem e re-uso de opções de mascaramento para a nova iteração de mascaramento. mascaramento de imagem é realizado usando automaticamente calculados estragos padrão. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, estragos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  AutoMaskingGraphCutOptions options;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // Re-using AutoMaskingGraphCutOptions there is no need to perform default strokes calculations second time.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.CalculateDefaultStrokes = false;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both default strokes and ObjectsPoints in the Args property of AutoMaskingArgs are provided, Point arrays are end up combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // The first ObjectsPoints array is considered to be a background points array and 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // the second ObjectsPoints array is considered to be a foreground points array.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both DefaultObjectsRectangles and ObjectsRectangles in the Args property of AutoMaskingArgs are provided, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // only the array from the Args is being used.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(100, 100), new Point(150, 100) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(500, 200) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsRectangles = new Rectangle[]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          new Rectangle(100, 100, 300, 300), 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }</assumedobjectdata></assumedobjectdata>

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem, modificação dos impactos padrão obtidos e usá-lo para a nova iteração de mascaramento. O mascaramento de imagem é realizado usando os impactos padrão calculados automaticamente. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, os impactos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada usando a nova instância GraphCutMaskingOptions.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                AutoMaskingGraphCutOptions options;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[5] = new Point(100, 100);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[15] = new Point(150, 100);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedForegroundStrokes[1] = new Point(500, 200);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions = new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedBackgroundStrokes,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedForegroundStrokes
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsRectangles = appliedObjectRectangles
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(graphCutOptions);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }</assumedobjectdata></assumedobjectdata>

DefaultForegroundStrokes

Recebe os preconceitos de antecedência padrão pré-calculados.

public Point[] DefaultForegroundStrokes { get; }

Valor da propriedade

Point [ ]

Examples

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem e re-uso de opções de mascaramento para a nova iteração de mascaramento. mascaramento de imagem é realizado usando automaticamente calculados estragos padrão. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, estragos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  AutoMaskingGraphCutOptions options;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // Re-using AutoMaskingGraphCutOptions there is no need to perform default strokes calculations second time.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.CalculateDefaultStrokes = false;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both default strokes and ObjectsPoints in the Args property of AutoMaskingArgs are provided, Point arrays are end up combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // The first ObjectsPoints array is considered to be a background points array and 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // the second ObjectsPoints array is considered to be a foreground points array.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both DefaultObjectsRectangles and ObjectsRectangles in the Args property of AutoMaskingArgs are provided, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // only the array from the Args is being used.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(100, 100), new Point(150, 100) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(500, 200) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsRectangles = new Rectangle[]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          new Rectangle(100, 100, 300, 300), 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }</assumedobjectdata></assumedobjectdata>

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem, modificação dos impactos padrão obtidos e usá-lo para a nova iteração de mascaramento. O mascaramento de imagem é realizado usando os impactos padrão calculados automaticamente. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, os impactos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada usando a nova instância GraphCutMaskingOptions.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                AutoMaskingGraphCutOptions options;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[5] = new Point(100, 100);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[15] = new Point(150, 100);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedForegroundStrokes[1] = new Point(500, 200);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions = new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedBackgroundStrokes,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedForegroundStrokes
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsRectangles = appliedObjectRectangles
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(graphCutOptions);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }</assumedobjectdata></assumedobjectdata>

DefaultObjectsRectangles

Obtenha os objetos padrão rectangulos.

public Rectangle[] DefaultObjectsRectangles { get; }

Valor da propriedade

Rectangle [ ]

Examples

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem e re-uso de opções de mascaramento para a nova iteração de mascaramento. mascaramento de imagem é realizado usando automaticamente calculados estragos padrão. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, estragos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  AutoMaskingGraphCutOptions options;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // Re-using AutoMaskingGraphCutOptions there is no need to perform default strokes calculations second time.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.CalculateDefaultStrokes = false;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both default strokes and ObjectsPoints in the Args property of AutoMaskingArgs are provided, Point arrays are end up combined.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // The first ObjectsPoints array is considered to be a background points array and 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // the second ObjectsPoints array is considered to be a foreground points array.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // When both DefaultObjectsRectangles and ObjectsRectangles in the Args property of AutoMaskingArgs are provided, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      // only the array from the Args is being used.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      options.Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(100, 100), new Point(150, 100) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      new Point[] { new Point(500, 200) }, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ObjectsRectangles = new Rectangle[]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          new Rectangle(100, 100, 300, 300), 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }</assumedobjectdata></assumedobjectdata>

Salvação do resultado de mascaramento de imagem com feathering com base no tamanho da imagem, modificação dos impactos padrão obtidos e usá-lo para a nova iteração de mascaramento. O mascaramento de imagem é realizado usando os impactos padrão calculados automaticamente. Adicionalmente, os dados dos dois objetos assumidos também são especificados na propriedade AssumedObjects da AutoMaskingGraphCutOptions. Depois de obter o resultado inicial de mascaramento, os impactos de fundo/foreground aplicados são modificados e outra iteração de mascaramento é realizada usando a nova instância GraphCutMaskingOptions.

List<assumedobjectdata> assumedObjects = new List<assumedobjectdata>();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                MaskingResult[] results;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                AutoMaskingGraphCutOptions options;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    options = new AutoMaskingGraphCutOptions
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        AssumedObjects = assumedObjects,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        CalculateDefaultStrokes = true,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions =
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(options);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // At this point applied foreground/background strokes can be analyzed and based on it additional 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                // foreground/background strokes can be manually provided.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[5] = new Point(100, 100);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedBackgroundStrokes[15] = new Point(150, 100);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedForegroundStrokes[1] = new Point(500, 200);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        FeatheringRadius = 3,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Method = SegmentationMethod.GraphCut,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Decompose = false,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ExportOptions = new PngOptions()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Source = new FileCreateSource("tempFile")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BackgroundReplacementColor = Color.Transparent,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Args = new AutoMaskingArgs()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedBackgroundStrokes,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            appliedForegroundStrokes
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ObjectsRectangles = appliedObjectRectangles
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    results = new ImageMasking(image).Decompose(graphCutOptions);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                using (RasterImage resultImage = (RasterImage)results[1].GetImage())
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }</assumedobjectdata></assumedobjectdata>

PrecalculationProgressEventHandler

Recebe ou coloca os pontos padrão do processo de pré-calculação progresso agente de eventos.

public ProgressEventHandler PrecalculationProgressEventHandler { get; set; }

Valor da propriedade

ProgressEventHandler

 Português