Stores the color information for multi-color extraction.
public struct ExObjColorInfo
public:
value class ExObjColorInfo sealed
class ExObjColorInfo:
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:\LEADTOOLS22\Resources\Images";
}
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
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.