The maximum number of objects to extract.
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)
The maximum number of objects to extract. The default value is 0.
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.
using Leadtools;using Leadtools.Codecs;using Leadtools.ImageProcessing;using Leadtools.ImageProcessing.Core;public void ExtractObjectsCommandExample(){using (RasterCodecs codecs = new RasterCodecs())// Load the original imageusing (RasterImage inputImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "demoicr2.tif"))){// Setup the extraction optionsExtractObjectsCommand command = new ExtractObjectsCommand(){DetectChildren = true,EightConnectivity = true,Outline = true};// Extract the objectscommand.Run(inputImage);using (ExObjData data = command.Data){// Log the number of objects from the first listExObjObjectList 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 optionsExObjFilterOptions filterOptions = new ExObjFilterOptions(){LargeObjectThreshold = -1, // No upper limit on sizeSmallObjectThreshold = 10 // Remove objects smaller than 10x10 pixels};// Filter the objectsdata.FilterList(objects, filterOptions);// Log the number of objects againConsole.WriteLine($"Number of objects (after filtering): {objects.Count}");// Setup the content bound optionsExObjContentBound 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 boundsdata.CalculateContentBound(new ExObjContentBound[] { contentBound }, contentBoundOptions);// Setup the region optionsExObjRegionOptions regionOptions = new ExObjRegionOptions(){Horizontal = true};// Calculate each object's regiondata.CalculateRegion(objects, regionOptions);// Create an output imageusing (RasterImage outputImage = RasterImage.Create(inputImage.Width, inputImage.Height, 24, inputImage.XResolution, RasterColor.White)){// Fill the output image with whitenew 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 regionforeach (ExObjObject @object in objects)foreach (ExObjSegment segment in @object.RegionHorizontal){// Update the region to the current segmentoutputImage.AddRectangleToRegion(null, segment.Bounds, RasterRegionCombineMode.Set);// Fill the region with blacknew FillCommand(RasterColor.Black).Run(outputImage);}// Clear the output image's regionoutputImage.MakeRegionEmpty();// Save the output imagecodecs.Save(outputImage, Path.Combine(LEAD_VARS.ImagesDir, "ExtractObjects.png"), RasterImageFormat.Png, 0);}}}}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}
import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.Iterator;import org.junit.*;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;import static org.junit.Assert.*;import leadtools.*;import leadtools.codecs.*;import leadtools.imageprocessing.FillCommand;import leadtools.imageprocessing.core.*;import leadtools.internal.Tuple;public void extractObjectsCommandExample() {final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";RasterCodecs codecs = new RasterCodecs();// Load the original imageRasterImage inputImage = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "demoicr2.tif"));// Setup the extraction optionsExtractObjectsCommand command = new ExtractObjectsCommand();command.setDetectChildren(true);command.setEightConnectivity(true);command.setOutline(true);// Extract the objectscommand.run(inputImage);ExObjData data = command.getData();// Log the number of objects from the first listExObjObjectList objects = data.iterator().next().getObjects();System.out.println("Number of objects (before filtering): " + objects.size());// Log the number of points around the first object (braces for scope)System.out.println(objects.iterator().next().getOutline().size());// Setup the filter optionsExObjFilterOptions filterOptions = new ExObjFilterOptions();filterOptions.setLargeObjectThreshold(-1);filterOptions.setSmallObjectThreshold(10);// Filter the objectsdata.filterList(objects, filterOptions);// Log the number of objects againSystem.out.println("Number of objects (after filtering): " + objects.size());// Setup the content bound optionsExObjContentBound contentBound = new ExObjContentBound(new LeadRect(192, 260, 323, 146));Collection<ExObjContentBound> col = Collections.singleton(contentBound);ExObjContentBoundOptions contentBoundOptions = new ExObjContentBoundOptions();contentBoundOptions.setObjectsOfInterest(null);// Calculate the content boundsdata.calculateContentBound(col, contentBoundOptions);// Setup the region optionsExObjRegionOptions regionOptions = new ExObjRegionOptions();regionOptions.setHorizontal(true);// Calculate each object's regiondata.calculateRegion(objects, regionOptions);// Create an output imageRasterImage outputImage = RasterImage.create(inputImage.getWidth(), inputImage.getHeight(), 24,inputImage.getXResolution(), RasterColor.WHITE);// Fill the output image with whitenew 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.getInput(), RasterRegionCombineMode.SET);new FillCommand(new RasterColor(255, 0, 0)).run(outputImage);outputImage.addRectangleToRegion(null, contentBound.getContent(), RasterRegionCombineMode.SET);new FillCommand(new RasterColor(0, 255, 0)).run(outputImage);// Populate the output image with each object's regionIterator<ExObjObject> it = objects.iterator();while (it.hasNext()) {Iterator<ExObjSegment> segments = it.next().getRegionHorizontal().iterator();while (segments.hasNext()) {outputImage.addRectangleToRegion(null, segments.next().getBounds(), RasterRegionCombineMode.SET);new FillCommand(RasterColor.BLACK).run(outputImage);}}// Clear the output image's regionoutputImage.makeRegionEmpty();// Save the output imagecodecs.save(outputImage, combine(LEAD_VARS_IMAGES_DIR, "ExtractObjects.png"), RasterImageFormat.PNG, 0);System.out.println("Command run and image saved to: " + combine(LEAD_VARS_IMAGES_DIR, "ExtractObjects.png"));assertTrue(new File(combine(LEAD_VARS_IMAGES_DIR, "ExtractObjects.png")).exists());outputImage.dispose();data.dispose();inputImage.dispose();codecs.dispose();}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
