MaskingOptions
Inheritance: java.lang.Object
public class MaskingOptions
Representa las opciones comunes de enmascarado de imágenes.
Constructores
| Constructor | Descripción |
|---|---|
| MaskingOptions() |
Campos
| Campo | Descripción |
|---|---|
| BACKGROUND_OBJECT_NUMBER | El número de objeto de fondo |
Métodos
| Método | Descripción |
|---|---|
| getMethod() | Obtiene el método de segmentación. |
| setMethod(int value) | Establece el método de segmentación. |
| getArgs() | Obtiene los argumentos para el algoritmo de segmentación. |
| setArgs(IMaskingArgs value) | Establece los argumentos para el algoritmo de segmentación. |
| getExportOptions() | Obtiene las opciones de exportación de imagen. |
| setExportOptions(ImageOptionsBase value) | Establece las opciones de exportación de imagen. |
| getMaskingArea() | Obtiene el área de enmascaramiento. |
| setMaskingArea(Rectangle value) | Establece el área de enmascaramiento. |
| getDecompose() | Obtiene un valor que indica si es innecesario separar cada Shape de la máscara como objeto individual o como objeto unido de la máscara separado del fondo. |
| setDecompose(boolean value) | Establece un valor que indica si es innecesario separar cada Shape de la máscara como objeto individual o como objeto unido de la máscara separado del fondo. |
| getBackgroundReplacementColor() | Obtiene el color de reemplazo del fondo. |
| setBackgroundReplacementColor(Color value) | Establece el color de reemplazo del fondo. |
Example: This example shows how to decompose a raster image into multiple images using image masking and the K-means segmentation algorithm.
Este ejemplo muestra cómo descomponer una imagen raster en múltiples imágenes usando enmascarado de imagen y el algoritmo de segmentación K-means. El enmascarado de imagen es una técnica de procesamiento de imágenes que se utiliza para separar el fondo de los objetos de la imagen en primer plano.
String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "Blue hills.png");
try {
com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();
// Establezca el número de clústeres (objetos separados). El valor predeterminado es 2, el objeto en primer plano y el fondo.
args.setNumberOfObjects(3);
// Establezca el número máximo de iteraciones.
args.setMaxIterationNumber(50);
// Establezca la precisión del método de segmentación (opcional)
args.setPrecision(1);
// Cada clúster (segmento) se almacenará en un archivo PNG separado.
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource(new java.io.ByteArrayInputStream(new byte[0])));
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Utilice el agrupamiento K-means.
// El agrupamiento K-means permite dividir la imagen en varios clústeres (segmentos) independientes.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.KMeans);
maskingOptions.setDecompose(true);
maskingOptions.setArgs(args);
// El color de fondo será naranja.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);
// Crea una instancia de la clase ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
// Divide la imagen fuente en varios clústeres (segmentos).
com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);
try
{
// Obtenga imágenes del resultado del enmascarado y guárdelas en PNG.
for (int i = 0; i < maskingResults.getLength(); i++) {
final IMaskingLayer resultsItem = maskingResults.get_Item(i);
String outputFileName = String.format("Blue hills.Segment%s.png", resultsItem.getObjectNumber());
Image resultImage = resultsItem.getImage();
try {
resultImage.save(dir + outputFileName);
} finally {
resultImage.close();
}
}
}
finally
{
maskingResults.close();
}
} finally {
image.close();
}
Example: This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method.
Este ejemplo muestra cómo especificar sugerencias para el algoritmo de enmascarado de imagen para mejorar la precisión del método de segmentación (agrupamiento). El enmascarado de imagen es una técnica de procesamiento de imágenes que se utiliza para separar el fondo de los objetos de la imagen en primer plano.
String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try {
com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();
// Sugerencia #1.
// Analice la imagen visualmente y establezca el área de interés. El resultado de la segmentación incluirá solo los objetos que estén completamente ubicados dentro de esta área.
args.setObjectsRectangles(new com.aspose.imaging.Rectangle[]
{
new com.aspose.imaging.Rectangle(86, 6, 270, 364),
});
// Sugerencia #2.
// Analiza la imagen visualmente y establece los puntos que pertenecen a objetos separados.
args.setObjectsPoints(new com.aspose.imaging.Point[][]
{
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(103, 326)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(280, 43)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(319, 86)},
});
// Cada clúster (segmento) se almacenará en un archivo PNG separado.
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource());
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Utilice el agrupamiento GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(args);
// El color de fondo será naranja.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);
// Crea una instancia de la clase ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
// Divide la imagen fuente en varios clústeres (segmentos).
com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);
try
{
// Obtenga imágenes del resultado del enmascarado y guárdelas en PNG.
for (int i = 0; i < maskingResults.getLength(); i++) {
String outputFileName = String.format("Gorilla.Segment%s.png", maskingResults.get_Item(i).getObjectNumber());
Image resultImage = maskingResults.get_Item(i).getImage();
try {
resultImage.save(dir + outputFileName);
} finally {
resultImage.close();
}
}
}
finally
{
maskingResults.close();
}
} finally {
image.close();
}
Example: Using a segment mask to speed up the segmentation process
// Opciones de exportación de enmascarado
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource());
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Utilice el agrupamiento GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(new com.aspose.imaging.masking.options.AutoMaskingArgs());
// El color de fondo será transparente.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getTransparent());
maskingOptions.setExportOptions(exportOptions);
String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "BigImage.jpg");
try
{
com.aspose.imaging.Size imageSize = image.getSize();
// Reduciendo el tamaño de la imagen para acelerar el proceso de segmentación
image.resizeHeightProportionally(600, com.aspose.imaging.ResizeType.HighQualityResample);
// Crea una instancia de la clase ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
// Divide la imagen fuente en varios clústeres (segmentos).
com.aspose.imaging.masking.result.MaskingResult maskingResult = masking.decompose(maskingOptions);
try
{
// Obteniendo la máscara de primer plano
com.aspose.imaging.RasterImage foregroundMask = maskingResult.get_Item(1).getMask();
try
{
// Aumenta el tamaño de la máscara al tamaño de la imagen original
foregroundMask.resize(imageSize.getWidth(), imageSize.getHeight(), com.aspose.imaging.ResizeType.NearestNeighbourResample);
// Aplicando la máscara a la imagen original para obtener un segmento de primer plano
com.aspose.imaging.RasterImage originImage = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "BigImage.jpg");
try
{
com.aspose.imaging.masking.ImageMasking.applyMask(originImage, foregroundMask, maskingOptions);
originImage.save(dir + "BigImage_foreground.png", exportOptions);
}
finally
{
originImage.close();
}
}
finally
{
foregroundMask.close();
}
}
finally
{
maskingResult.close();
}
}
finally
{
image.close();
}
Example: Saving the masking session to a file for long sessions, as well as for the possibility of resuming the session in another environment.
String dir = "c:\\temp\\";
String sessionBackupFile = dir + "session.bak";
// Opciones de exportación de enmascarado
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource());
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Utilice el agrupamiento GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(new com.aspose.imaging.masking.options.AutoMaskingArgs());
// El color de fondo será naranja.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);
// Iniciando una sesión por primera vez y guardando en un archivo
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try
{
// Crea una instancia de la clase ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
com.aspose.imaging.masking.IMaskingSession session = masking.createSession(maskingOptions);
try
{
com.aspose.imaging.masking.result.MaskingResult maskingResult = session.decompose();
try
{
com.aspose.imaging.RasterImage segmentImage = maskingResult.get_Item(1).getImage();
try
{
segmentImage.save(dir + "step1.png");
}
finally
{
segmentImage.close();
}
}
finally
{
maskingResult.close();
}
session.save(sessionBackupFile);
}
finally
{
session.dispose();
}
}
finally
{
image.close();
}
// Reanudando una sesión de enmascarado desde un archivo
com.aspose.imaging.RasterImage image2 = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try
{
// Crea una instancia de la clase ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image2);
com.aspose.imaging.masking.IMaskingSession session = masking.loadSession(sessionBackupFile);
try
{
com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();
// Analiza la imagen visualmente y establece los puntos que pertenecen a objetos separados.
args.setObjectsPoints(new Point[][]
{
new Point[]
{
new Point(0, 0), new Point(0, 1), new Point(1, 0),
new Point(1, 1), new Point(2, 0), new Point(2, 1),
new Point(3, 0), new Point(3, 1)
},
});
com.aspose.imaging.masking.result.MaskingResult maskingResult = session.improveDecomposition(args);
try
{
// Transferencia explícita de opciones de exportación, ya que no es serializable
maskingResult.MaskingOptions.setExportOptions(exportOptions);
com.aspose.imaging.RasterImage segmentImage = maskingResult.get_Item(1).getImage();
try
{
segmentImage.save(dir + "step2.png");
}
finally
{
segmentImage.close();
}
}
finally
{
maskingResult.close();
}
}
finally
{
session.dispose();
}
}
finally
{
image2.close();
}
MaskingOptions()
public MaskingOptions()
BACKGROUND_OBJECT_NUMBER
public static final int BACKGROUND_OBJECT_NUMBER
El número de objeto de fondo
getMethod()
public final int getMethod()
Obtiene el método de segmentación.
Valor: El método de segmentación.
Returns: int - el método de segmentación.
setMethod(int value)
public final void setMethod(int value)
Establece el método de segmentación.
Valor: El método de segmentación.
Parameters:
| Parámetro | Tipo | Descripción |
|---|---|---|
| valor | int | el método de segmentación. |
Example: This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method. Este ejemplo muestra cómo especificar sugerencias para el algoritmo de enmascarado de imagen para mejorar la precisión del método de segmentación (agrupamiento). El enmascarado de imagen es una técnica de procesamiento de imágenes que se utiliza para separar el fondo de los objetos de la imagen en primer plano.
String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try {
com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();
// Sugerencia #1.
// Analice la imagen visualmente y establezca el área de interés. El resultado de la segmentación incluirá solo los objetos que estén completamente ubicados dentro de esta área.
args.setObjectsRectangles(new com.aspose.imaging.Rectangle[]
{
new com.aspose.imaging.Rectangle(86, 6, 270, 364),
});
// Sugerencia #2.
// Analiza la imagen visualmente y establece los puntos que pertenecen a objetos separados.
args.setObjectsPoints(new com.aspose.imaging.Point[][]
{
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(103, 326)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(280, 43)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(319, 86)},
});
// Cada clúster (segmento) se almacenará en un archivo PNG separado.
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource());
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Utilice el agrupamiento GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(args);
// El color de fondo será naranja.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);
// Crea una instancia de la clase ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
// Divide la imagen fuente en varios clústeres (segmentos).
com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);
try
{
// Obtenga imágenes del resultado del enmascarado y guárdelas en PNG.
for (int i = 0; i < maskingResults.getLength(); i++) {
String outputFileName = String.format("Gorilla.Segment%s.png", maskingResults.get_Item(i).getObjectNumber());
Image resultImage = maskingResults.get_Item(i).getImage();
try {
resultImage.save(dir + outputFileName);
} finally {
resultImage.close();
}
}
}
finally
{
maskingResults.close();
}
} finally {
image.close();
}
getArgs()
public final IMaskingArgs getArgs()
Obtiene los argumentos para el algoritmo de segmentación.
Valor: Los argumentos para el algoritmo de segmentación.
Returns: IMaskingArgs - the arguments for segmentation algorithm.
setArgs(IMaskingArgs value)
public final void setArgs(IMaskingArgs value)
Establece los argumentos para el algoritmo de segmentación.
Valor: Los argumentos para el algoritmo de segmentación.
Parameters:
| Parámetro | Tipo | Descripción |
|---|---|---|
| value | IMaskingArgs | los argumentos para el algoritmo de segmentación. |
getExportOptions()
public final ImageOptionsBase getExportOptions()
Obtiene las opciones de exportación de imagen.
Valor: Las opciones de exportación de imagen que se utilizarán para crear las imágenes resultantes.
Returns: ImageOptionsBase - the image export options.
setExportOptions(ImageOptionsBase value)
public final void setExportOptions(ImageOptionsBase value)
Establece las opciones de exportación de imagen.
Valor: Las opciones de exportación de imagen que se utilizarán para crear las imágenes resultantes.
Parameters:
| Parámetro | Tipo | Descripción |
|---|---|---|
| value | ImageOptionsBase | las opciones de exportación de imagen. |
Example: This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method. Este ejemplo muestra cómo especificar sugerencias para el algoritmo de enmascarado de imagen para mejorar la precisión del método de segmentación (agrupamiento). El enmascarado de imagen es una técnica de procesamiento de imágenes que se utiliza para separar el fondo de los objetos de la imagen en primer plano.
String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try {
com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();
// Sugerencia #1.
// Analice la imagen visualmente y establezca el área de interés. El resultado de la segmentación incluirá solo los objetos que estén completamente ubicados dentro de esta área.
args.setObjectsRectangles(new com.aspose.imaging.Rectangle[]
{
new com.aspose.imaging.Rectangle(86, 6, 270, 364),
});
// Sugerencia #2.
// Analiza la imagen visualmente y establece los puntos que pertenecen a objetos separados.
args.setObjectsPoints(new com.aspose.imaging.Point[][]
{
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(103, 326)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(280, 43)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(319, 86)},
});
// Cada clúster (segmento) se almacenará en un archivo PNG separado.
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource());
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Utilice el agrupamiento GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(args);
// El color de fondo será naranja.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);
// Crea una instancia de la clase ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
// Divide la imagen fuente en varios clústeres (segmentos).
com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);
try
{
// Obtenga imágenes del resultado del enmascarado y guárdelas en PNG.
for (int i = 0; i < maskingResults.getLength(); i++) {
String outputFileName = String.format("Gorilla.Segment%s.png", maskingResults.get_Item(i).getObjectNumber());
Image resultImage = maskingResults.get_Item(i).getImage();
try {
resultImage.save(dir + outputFileName);
} finally {
resultImage.close();
}
}
}
finally
{
maskingResults.close();
}
} finally {
image.close();
}
getMaskingArea()
public final Rectangle getMaskingArea()
Obtiene el área de enmascaramiento.
Valor: El área de enmascaramiento que es una zona parcial de la imagen fuente. El valor Rectangle.Empty significa el área completa de la imagen fuente.
Returns: Rectangle - the masking area.
setMaskingArea(Rectangle value)
public final void setMaskingArea(Rectangle value)
Establece el área de enmascaramiento.
Valor: El área de enmascaramiento que es una zona parcial de la imagen fuente. El valor Rectangle.Empty significa el área completa de la imagen fuente.
Parameters:
| Parámetro | Tipo | Descripción |
|---|---|---|
| value | Rectangle | el área de enmascaramiento. |
getDecompose()
public final boolean getDecompose()
Obtiene un valor que indica si es innecesario separar cada Shape de la máscara como objeto individual o como objeto unido de la máscara separado del fondo.
Valor: true si descomponer; de lo contrario, false.
Returns: boolean - un valor que indica si es innecesario separar cada Shape de la máscara como objeto individual o como objeto unido de la máscara separado del fondo.
setDecompose(boolean value)
public final void setDecompose(boolean value)
Establece un valor que indica si es innecesario separar cada Shape de la máscara como objeto individual o como objeto unido de la máscara separado del fondo.
Valor: true si descomponer; de lo contrario, false.
Parameters:
| Parámetro | Tipo | Descripción |
|---|---|---|
| valor | boolean | un valor que indica si es innecesario separar cada Shape de la máscara como objeto individual o como objeto unido de la máscara separado del fondo. |
getBackgroundReplacementColor()
public final Color getBackgroundReplacementColor()
Obtiene el color de reemplazo del fondo.
Valor: El color de reemplazo del fondo. Este color se usará como color de fondo en las imágenes resultantes.
Returns: Color - the background replacement color.
setBackgroundReplacementColor(Color value)
public final void setBackgroundReplacementColor(Color value)
Establece el color de reemplazo del fondo.
Valor: El color de reemplazo del fondo. Este color se usará como color de fondo en las imágenes resultantes.
Parameters:
| Parámetro | Tipo | Descripción |
|---|---|---|
| value | Color | el color de reemplazo del fondo. |
Example: This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method. Este ejemplo muestra cómo especificar sugerencias para el algoritmo de enmascarado de imagen para mejorar la precisión del método de segmentación (agrupamiento). El enmascarado de imagen es una técnica de procesamiento de imágenes que se utiliza para separar el fondo de los objetos de la imagen en primer plano.
String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try {
com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();
// Sugerencia #1.
// Analice la imagen visualmente y establezca el área de interés. El resultado de la segmentación incluirá solo los objetos que estén completamente ubicados dentro de esta área.
args.setObjectsRectangles(new com.aspose.imaging.Rectangle[]
{
new com.aspose.imaging.Rectangle(86, 6, 270, 364),
});
// Sugerencia #2.
// Analiza la imagen visualmente y establece los puntos que pertenecen a objetos separados.
args.setObjectsPoints(new com.aspose.imaging.Point[][]
{
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(103, 326)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(280, 43)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(319, 86)},
});
// Cada clúster (segmento) se almacenará en un archivo PNG separado.
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource());
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Utilice el agrupamiento GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(args);
// El color de fondo será naranja.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);
// Crea una instancia de la clase ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
// Divide la imagen fuente en varios clústeres (segmentos).
com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);
try
{
// Obtenga imágenes del resultado del enmascarado y guárdelas en PNG.
for (int i = 0; i < maskingResults.getLength(); i++) {
String outputFileName = String.format("Gorilla.Segment%s.png", maskingResults.get_Item(i).getObjectNumber());
Image resultImage = maskingResults.get_Item(i).getImage();
try {
resultImage.save(dir + outputFileName);
} finally {
resultImage.close();
}
}
}
finally
{
maskingResults.close();
}
} finally {
image.close();
}