←Select platform

UseMultiColors Property

Summary

Indicates whether object extraction should be performed for multiple colors instead of bitonal.

Syntax
C#
VB
C++
public bool UseMultiColors {get; set;} 
Public Property UseMultiColors() As Boolean 
   Get 
   Set 
public:  
   property bool UseMultiColors 
   { 
      bool get() 
      void set(bool value) 
   } 

Property Value

true to extract objects for each specified entry in ColorInfo; otherwise, false for bitonal extraction. The default value is false.

Remarks

The colors can be configured using ColorInfo.

Example
C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
 
public void ExtractObjectsCommandUseMultiColorsExample() 
{ 
   using (RasterCodecs codecs = new RasterCodecs()) 
   // Load the original image 
   using (RasterImage inputImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "unwarp1.jpg"))) 
   { 
      // Setup the extraction options 
      Tuple<string, RasterColor>[] colors = new Tuple<string, RasterColor>[] 
      { 
         Tuple.Create("DarkGray", new RasterColor(30, 30, 30)), 
         Tuple.Create("DarkGreen", new RasterColor(41, 108, 70)), 
         Tuple.Create("LightRed", new RasterColor(200, 68, 65)) 
      }; 
      ExtractObjectsCommand command = new ExtractObjectsCommand() 
      { 
         ColorInfo = colors 
            .Select(c => new ExObjColorInfo() 
            { 
               Color = c.Item2, 
               Threshold = 50 
            }) 
            .ToArray(), 
         DetectChildren = true, 
         EightConnectivity = true, 
         IgnoreSmallNoise = true, 
         Outline = true, 
         SmallNoiseThreshold = 5, // Filter out noise smaller than 5x5 pixels 
         UseMultiColors = true 
      }; 
 
      // Extract the objects 
      command.Run(inputImage); 
 
      using (ExObjData data = command.Data) 
      { 
         // Put objects into one list for processing all at once 
         List<ExObjObject> objects = new List<ExObjObject>(); 
         foreach (ExObjResult result in data) 
            objects.AddRange(result.Objects); 
 
         // Setup the region options 
         ExObjRegionOptions regionOptions = new ExObjRegionOptions() 
         { 
            Horizontal = true 
         }; 
 
         // Calculate each object's region 
         data.CalculateRegion(objects, regionOptions); 
 
         // Create an output image 
         using (RasterImage outputImage = RasterImage.Create(inputImage.Width, inputImage.Height, 24, inputImage.XResolution, RasterColor.White)) 
         { 
            // Extract each color to a separate image 
            int colorIndex = -1; 
 
            foreach (ExObjResult result in data) 
            { 
               colorIndex++; 
 
               // Fill the output image with white 
               new FillCommand(RasterColor.White).Run(outputImage); 
 
               // Populate the output image with each object's region 
               foreach (ExObjObject @object in result.Objects) 
                  foreach (ExObjSegment segment in @object.RegionHorizontal) 
                  { 
                     // Update the region to the current segment 
                     outputImage.AddRectangleToRegion(null, segment.Bounds, RasterRegionCombineMode.Set); 
 
                     // Fill the region with the current color 
                     new FillCommand(colors[colorIndex].Item2).Run(outputImage); 
                  } 
 
               // Clear the output image's region 
               outputImage.MakeRegionEmpty(); 
 
               // Save the output image 
               codecs.Save(outputImage, Path.Combine(LEAD_VARS.ImagesDir, $"ExtractObjectsMultiColors_{colors[colorIndex].Item1}.png"), RasterImageFormat.Png, 0); 
            } 
         } 
      } 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Core 
 
Public Sub ExtractObjectsCommandUseMultiColorsExample() 
   Using codecs As New RasterCodecs() 
      ' Load the original image 
      Using inputImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "unwarp1.jpg")) 
         ' Setup the extraction options 
         Dim colors As Tuple(Of String, RasterColor)() = New Tuple(Of String, RasterColor)() { 
            Tuple.Create("DarkGray", New RasterColor(30, 30, 30)), 
            Tuple.Create("DarkGreen", New RasterColor(41, 108, 70)), 
            Tuple.Create("LightRed", New RasterColor(200, 68, 65)) 
         } 
         Dim command As New ExtractObjectsCommand() With { 
            .ColorInfo = colors.[Select](Function(c) New ExObjColorInfo() With { 
               .Color = c.Item2, 
               .Threshold = 50 
            }).ToArray(), 
            .DetectChildren = True, 
            .EightConnectivity = True, 
            .IgnoreSmallNoise = True, 
            .Outline = True, 
            .SmallNoiseThreshold = 5, ' Filter out noise smaller than 5x5 pixels 
            .UseMultiColors = True 
         } 
 
         ' Extract the objects 
         command.Run(inputImage) 
 
         Using data As ExObjData = command.Data 
            ' Put objects into one list for processing all at once 
            Dim objects As New List(Of ExObjObject)() 
            For Each result As ExObjResult In data 
               objects.AddRange(result.Objects) 
            Next 
 
            ' Setup the region options 
            Dim regionOptions As New ExObjRegionOptions() With { 
               .Horizontal = True 
            } 
 
            ' Calculate each object's region 
            data.CalculateRegion(objects, regionOptions) 
 
            ' Create an output image 
            Using outputImage As RasterImage = RasterImage.Create(inputImage.Width, inputImage.Height, 24, inputImage.XResolution, RasterColor.White) 
               ' Extract each color to a separate image 
               Dim colorIndex As Integer = -1 
 
               For Each result As ExObjResult In data 
                  colorIndex += 1 
 
                  ' Fill the output image with white 
                  Call New FillCommand(RasterColor.White).Run(outputImage) 
 
                  ' Populate the output image with each object's region 
                  For Each [object] As ExObjObject In result.Objects 
                     For Each segment As ExObjSegment In [object].RegionHorizontal 
                        ' Update the region to the current segment 
                        outputImage.AddRectangleToRegion(Nothing, segment.Bounds, RasterRegionCombineMode.[Set]) 
 
                        ' Fill the region with the current color 
                        Call New FillCommand(colors(colorIndex).Item2).Run(outputImage) 
                     Next 
                  Next 
 
                  ' Clear the output image's region 
                  outputImage.MakeRegionEmpty() 
 
                  ' Save the output image 
                  codecs.Save(outputImage, Path.Combine(LEAD_VARS.ImagesDir, $"ExtractObjectsMultiColors_{colors(colorIndex).Item1}.png"), RasterImageFormat.Png, 0) 
               Next 
            End Using 
         End Using 
      End Using 
   End Using 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images" 
End Class 
Requirements
Target Platforms
Help Version 21.0.2021.3.3
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ImageProcessing.Core Assembly