←Select platform

MaxObjectCount Property

Summary

The maximum number of objects to extract.

Syntax
C#
C++/CLI
Java
Python
public int MaxObjectCount {get; set;} 
public int getMaxObjectCount(); 
public void setMaxObjectCount( 
   int intValue 
); 
public:  
   property Int32 MaxObjectCount 
   { 
      Int32 get() 
      void set(Int32 value) 
   } 
MaxObjectCount # get and set (ExtractObjectsCommand) 

Property Value

The maximum number of objects to extract. The default value is 0.

Remarks

Use a non-positive integer to disable this limit and extract all objects.

The number of objects extracted includes both containers (if using IgnoreContainers) and children (if using DetectChildren). Noise is not included.

Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
 
public void ExtractObjectsCommandExample() 
{ 
   using (RasterCodecs codecs = new RasterCodecs()) 
   // Load the original image 
   using (RasterImage inputImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "demoicr2.tif"))) 
   { 
      // Setup the extraction options 
      ExtractObjectsCommand command = new ExtractObjectsCommand() 
      { 
         DetectChildren = true, 
         EightConnectivity = true, 
         Outline = true 
      }; 
 
      // Extract the objects 
      command.Run(inputImage); 
 
      using (ExObjData data = command.Data) 
      { 
         // Log the number of objects from the first list 
         ExObjObjectList objects = data[0].Objects; 
         Console.WriteLine($"Number of objects (before filtering): {objects.Count}"); 
 
         // Log the number of points around the first object (braces for scope) 
         { 
            int count = 0; 
            foreach (ExObjOutlinePoint point in objects.First().Outline) 
               count++; 
            Console.WriteLine($"First object's outline length: {count}"); 
         } 
 
         // Setup the filter options 
         ExObjFilterOptions filterOptions = new ExObjFilterOptions() 
         { 
            LargeObjectThreshold = -1, // No upper limit on size 
            SmallObjectThreshold = 10 // Remove objects smaller than 10x10 pixels 
         }; 
 
         // Filter the objects 
         data.FilterList(objects, filterOptions); 
 
         // Log the number of objects again 
         Console.WriteLine($"Number of objects (after filtering): {objects.Count}"); 
 
         // Setup the content bound options 
         ExObjContentBound contentBound = new ExObjContentBound(new LeadRect(192, 260, 323, 146)); 
         ExObjContentBoundOptions contentBoundOptions = new ExObjContentBoundOptions() 
         { 
            ObjectsOfInterest = null // Pass null to use every object in data 
         }; 
 
         // Calculate the content bounds 
         data.CalculateContentBound(new ExObjContentBound[] { contentBound }, contentBoundOptions); 
 
         // 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)) 
         { 
            // Fill the output image with white 
            new FillCommand(RasterColor.White).Run(outputImage); 
 
            // Draw the content bound rects for the first word. Red for the input, green for the output. 
            outputImage.AddRectangleToRegion(null, contentBound.Input, RasterRegionCombineMode.Set); 
            new FillCommand(new RasterColor(255, 0, 0)).Run(outputImage); 
            outputImage.AddRectangleToRegion(null, contentBound.Content, RasterRegionCombineMode.Set); 
            new FillCommand(new RasterColor(0, 255, 0)).Run(outputImage); 
 
            // Populate the output image with each object's region 
            foreach (ExObjObject @object in 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 black 
                  new FillCommand(RasterColor.Black).Run(outputImage); 
               } 
 
            // Clear the output image's region 
            outputImage.MakeRegionEmpty(); 
 
            // Save the output image 
            codecs.Save(outputImage, Path.Combine(LEAD_VARS.ImagesDir, "ExtractObjects.png"), RasterImageFormat.Png, 0); 
         } 
      } 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 22.0.2023.11.1
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ImageProcessing.Core Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.