←Select platform

CheckContainerSubchildren Property

Summary

Indicates whether the number of children for container filtering includes sub-children.

Syntax
C#
Objective-C
C++/CLI
Java
Python
public bool CheckContainerSubchildren {get; set;} 
@property (nonatomic, assign) BOOL checkContainerSubchildren; 
public boolean getCheckContainerSubchildren(); 
public void setCheckContainerSubchildren( 
   boolean booleanValue 
); 
public:  
   property bool CheckContainerSubchildren 
   { 
      bool get() 
      void set(bool value) 
   } 
CheckContainerSubchildren # get and set (ExtractObjectsCommand) 

Property Value

true to check the number of children in a container by recursing to lower objects; otherwise, false to only consider immediate children. The default value is false.

Remarks

IgnoreContainers must be true for this property to be used.

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.