AutoMaskingGraphCutOptions

Inheritance: java.lang.Object, com.aspose.imaging.masking.options.MaskingOptions, com.aspose.imaging.masking.options.GraphCutMaskingOptions

public class AutoMaskingGraphCutOptions extends GraphCutMaskingOptions

GraphCut otomatik maskeleme seçenekleri.

Yapıcılar

YapıcıAçıklama
AutoMaskingGraphCutOptions()Yeni bir AutoMaskingGraphCutOptions sınıfı örneği başlatır.

Yöntemler

YöntemAçıklama
getDefaultForegroundStrokes()Önceden hesaplanmış varsayılan ön plan darbelerini alır.
getDefaultBackgroundStrokes()Varsayılan arka plan darbelerini alır.
getDefaultObjectsRectangles()Varsayılan nesne dikdörtgenlerini alır.
getAssumedObjects()Varsayılan nesneleri alır.
setAssumedObjects(List value)Varsayılan nesneleri ayarlar.
getCalculateDefaultStrokes()Varsayılan darbelerin hesaplanıp hesaplanmayacağını gösteren bir değeri alır.
setCalculateDefaultStrokes(boolean value)Varsayılan darbelerin hesaplanıp hesaplanmayacağını gösteren bir değeri ayarlar.
getPrecalculationProgressEventHandler()Varsayılan noktaların ön hesaplama süreci ilerleme olay işleyicisini alır.
setPrecalculationProgressEventHandler(ProgressEventHandler value)Varsayılan noktaların ön hesaplama süreci ilerleme olay işleyicisini ayarlar.

Example: Saving image masking result with feathering based on image size.

Görüntü boyutuna göre yumuşatma ile görüntü maskeleme sonucu kaydediliyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. AutoMaskingGraphCutOptions sınıfının Args özelliği, varsayılan darbeler sonunda oraya yerleştirildiği için atlanabilir. MaskingResult[] results;


MaskingResult[] results; 
            
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius((Math.max(image.getWidth(), image.getHeight()) / 500) + 1);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}
            

Example: Saving image masking result with feathering based on image size.

Görüntü boyutuna göre yumuşatma ile görüntü maskeleme sonucu kaydediliyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki assumed objects’in verileri de AutoMaskingGraphCutOptions sınıfının AssumedObjects özelliğinde belirtilir.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius((Math.max(image.getWidth(), image.getHeight()) / 500) + 1);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}
            

Example: Saving image masking result with feathering based on image size and re-using masking options for the new masking iteration.

Görüntü boyutuna göre yumuşatma ile görüntü maskeleme sonucu kaydediliyor ve yeni maskeleme yinelemesi için maskeleme seçenekleri yeniden kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki assumed objects’in verileri de AutoMaskingGraphCutOptions sınıfının AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.
Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    // AutoMaskingGraphCutOptions yeniden kullanıldığında varsayılan darbelerin hesaplamasını ikinci kez yapmaya gerek yoktur.
    options.setCalculateDefaultStrokes(false);
    // AutoMaskingArgs sınıfının Args özelliğinde hem varsayılan darbeler hem de ObjectsPoints sağlandığında, Point dizileri birleştirilir.
    // İlk ObjectsPoints dizisi bir arka plan nokta dizisi olarak kabul edilir ve
    // İkinci ObjectsPoints dizisi ön plan noktaları dizisi olarak kabul edilir.
    // AutoMaskingArgs'in Args özelliğinde hem DefaultObjectsRectangles hem de ObjectsRectangles sağlandığında,
    // yalnızca Args'tan gelen dizi kullanılmaktadır.
    AutoMaskingArgs args = new AutoMaskingArgs();
    args.setObjectsPoints(new Point[][]
            {
                    new Point[] { new Point(100, 100), new Point(150, 100) },
                    new Point[] { new Point(500, 200) },
            });

    args.setObjectsRectangles( new Rectangle[] { new Rectangle(100, 100, 300, 300) });
    options.setArgs(args);
    results = new ImageMasking(image).decompose(options);
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

Example: Saving image masking result with feathering based on image size, modifying obtained default strokes and using it for the new masking iteration.

Resim boyutuna göre feathering uygulanarak görüntü maskeleme sonucu kaydediliyor, elde edilen varsayılan darbeler değiştiriliyor ve yeni maskeleme yinelemesi için kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki varsayılan nesnenin verileri AutoMaskingGraphCutOptions’ın AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve yeni bir GraphCutMaskingOptions örneği kullanılarak başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.

Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

appliedBackgroundStrokes[5] = new Point(100, 100);
appliedBackgroundStrokes[15] = new Point(150, 100);

appliedForegroundStrokes[1] = new Point(500, 200);

appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        AutoMaskingArgs args = new AutoMaskingArgs();
        args.setObjectsPoints(new Point[][]
                {
                        appliedBackgroundStrokes,
                        appliedForegroundStrokes
                });

        args.setObjectsRectangles(appliedObjectRectangles);
                    
        GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions();
        graphCutOptions.setFeatheringRadius(3);
        graphCutOptions.setMethod(SegmentationMethod.GraphCut);
        graphCutOptions.setDecompose(false);
        graphCutOptions.setExportOptions(pngOptions);
        graphCutOptions.setBackgroundReplacementColor(Color.getTransparent());
        graphCutOptions.setArgs(args);
                    
        results = new ImageMasking(image).decompose(graphCutOptions);
    }
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

AutoMaskingGraphCutOptions()

public AutoMaskingGraphCutOptions()

Yeni bir AutoMaskingGraphCutOptions sınıfı örneği başlatır.

getDefaultForegroundStrokes()

public final Point[] getDefaultForegroundStrokes()

Önceden hesaplanmış varsayılan ön plan darbelerini alır.

Returns: com.aspose.imaging.Point[] - önceden hesaplanmış varsayılan ön plan darbeleri.

Example: Saving image masking result with feathering based on image size and re-using masking options for the new masking iteration. Görüntü boyutuna göre yumuşatma ile görüntü maskeleme sonucu kaydediliyor ve yeni maskeleme yinelemesi için maskeleme seçenekleri yeniden kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki assumed objects’in verileri de AutoMaskingGraphCutOptions sınıfının AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.
Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    // AutoMaskingGraphCutOptions yeniden kullanıldığında varsayılan darbelerin hesaplamasını ikinci kez yapmaya gerek yoktur.
    options.setCalculateDefaultStrokes(false);
    // AutoMaskingArgs sınıfının Args özelliğinde hem varsayılan darbeler hem de ObjectsPoints sağlandığında, Point dizileri birleştirilir.
    // İlk ObjectsPoints dizisi bir arka plan nokta dizisi olarak kabul edilir ve
    // İkinci ObjectsPoints dizisi ön plan noktaları dizisi olarak kabul edilir.
    // AutoMaskingArgs'in Args özelliğinde hem DefaultObjectsRectangles hem de ObjectsRectangles sağlandığında,
    // yalnızca Args'tan gelen dizi kullanılmaktadır.
    AutoMaskingArgs args = new AutoMaskingArgs();
    args.setObjectsPoints(new Point[][]
            {
                    new Point[] { new Point(100, 100), new Point(150, 100) },
                    new Point[] { new Point(500, 200) },
            });

    args.setObjectsRectangles( new Rectangle[] { new Rectangle(100, 100, 300, 300) });
    options.setArgs(args);
    results = new ImageMasking(image).decompose(options);
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

Example: Saving image masking result with feathering based on image size, modifying obtained default strokes and using it for the new masking iteration. Resim boyutuna göre feathering uygulanarak görüntü maskeleme sonucu kaydediliyor, elde edilen varsayılan darbeler değiştiriliyor ve yeni maskeleme yinelemesi için kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki varsayılan nesnenin verileri AutoMaskingGraphCutOptions’ın AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve yeni bir GraphCutMaskingOptions örneği kullanılarak başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.

Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

appliedBackgroundStrokes[5] = new Point(100, 100);
appliedBackgroundStrokes[15] = new Point(150, 100);

appliedForegroundStrokes[1] = new Point(500, 200);

appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        AutoMaskingArgs args = new AutoMaskingArgs();
        args.setObjectsPoints(new Point[][]
                {
                        appliedBackgroundStrokes,
                        appliedForegroundStrokes
                });

        args.setObjectsRectangles(appliedObjectRectangles);
                    
        GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions();
        graphCutOptions.setFeatheringRadius(3);
        graphCutOptions.setMethod(SegmentationMethod.GraphCut);
        graphCutOptions.setDecompose(false);
        graphCutOptions.setExportOptions(pngOptions);
        graphCutOptions.setBackgroundReplacementColor(Color.getTransparent());
        graphCutOptions.setArgs(args);
                    
        results = new ImageMasking(image).decompose(graphCutOptions);
    }
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

getDefaultBackgroundStrokes()

public final Point[] getDefaultBackgroundStrokes()

Varsayılan arka plan darbelerini alır.

Returns: com.aspose.imaging.Point[] - varsayılan arka plan darbeleri.

Example: Saving image masking result with feathering based on image size and re-using masking options for the new masking iteration. Görüntü boyutuna göre yumuşatma ile görüntü maskeleme sonucu kaydediliyor ve yeni maskeleme yinelemesi için maskeleme seçenekleri yeniden kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki assumed objects’in verileri de AutoMaskingGraphCutOptions sınıfının AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.
Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    // AutoMaskingGraphCutOptions yeniden kullanıldığında varsayılan darbelerin hesaplamasını ikinci kez yapmaya gerek yoktur.
    options.setCalculateDefaultStrokes(false);
    // AutoMaskingArgs sınıfının Args özelliğinde hem varsayılan darbeler hem de ObjectsPoints sağlandığında, Point dizileri birleştirilir.
    // İlk ObjectsPoints dizisi bir arka plan nokta dizisi olarak kabul edilir ve
    // İkinci ObjectsPoints dizisi ön plan noktaları dizisi olarak kabul edilir.
    // AutoMaskingArgs'in Args özelliğinde hem DefaultObjectsRectangles hem de ObjectsRectangles sağlandığında,
    // yalnızca Args'tan gelen dizi kullanılmaktadır.
    AutoMaskingArgs args = new AutoMaskingArgs();
    args.setObjectsPoints(new Point[][]
            {
                    new Point[] { new Point(100, 100), new Point(150, 100) },
                    new Point[] { new Point(500, 200) },
            });

    args.setObjectsRectangles( new Rectangle[] { new Rectangle(100, 100, 300, 300) });
    options.setArgs(args);
    results = new ImageMasking(image).decompose(options);
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

Example: Saving image masking result with feathering based on image size, modifying obtained default strokes and using it for the new masking iteration. Resim boyutuna göre feathering uygulanarak görüntü maskeleme sonucu kaydediliyor, elde edilen varsayılan darbeler değiştiriliyor ve yeni maskeleme yinelemesi için kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki varsayılan nesnenin verileri AutoMaskingGraphCutOptions’ın AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve yeni bir GraphCutMaskingOptions örneği kullanılarak başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.

Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

appliedBackgroundStrokes[5] = new Point(100, 100);
appliedBackgroundStrokes[15] = new Point(150, 100);

appliedForegroundStrokes[1] = new Point(500, 200);

appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        AutoMaskingArgs args = new AutoMaskingArgs();
        args.setObjectsPoints(new Point[][]
                {
                        appliedBackgroundStrokes,
                        appliedForegroundStrokes
                });

        args.setObjectsRectangles(appliedObjectRectangles);
                    
        GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions();
        graphCutOptions.setFeatheringRadius(3);
        graphCutOptions.setMethod(SegmentationMethod.GraphCut);
        graphCutOptions.setDecompose(false);
        graphCutOptions.setExportOptions(pngOptions);
        graphCutOptions.setBackgroundReplacementColor(Color.getTransparent());
        graphCutOptions.setArgs(args);
                    
        results = new ImageMasking(image).decompose(graphCutOptions);
    }
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

getDefaultObjectsRectangles()

public final Rectangle[] getDefaultObjectsRectangles()

Varsayılan nesne dikdörtgenlerini alır.

Returns: com.aspose.imaging.Rectangle[] - varsayılan nesne dikdörtgenleri.

Example: Saving image masking result with feathering based on image size and re-using masking options for the new masking iteration. Görüntü boyutuna göre yumuşatma ile görüntü maskeleme sonucu kaydediliyor ve yeni maskeleme yinelemesi için maskeleme seçenekleri yeniden kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki assumed objects’in verileri de AutoMaskingGraphCutOptions sınıfının AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.
Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    // AutoMaskingGraphCutOptions yeniden kullanıldığında varsayılan darbelerin hesaplamasını ikinci kez yapmaya gerek yoktur.
    options.setCalculateDefaultStrokes(false);
    // AutoMaskingArgs sınıfının Args özelliğinde hem varsayılan darbeler hem de ObjectsPoints sağlandığında, Point dizileri birleştirilir.
    // İlk ObjectsPoints dizisi bir arka plan nokta dizisi olarak kabul edilir ve
    // İkinci ObjectsPoints dizisi ön plan noktaları dizisi olarak kabul edilir.
    // AutoMaskingArgs'in Args özelliğinde hem DefaultObjectsRectangles hem de ObjectsRectangles sağlandığında,
    // yalnızca Args'tan gelen dizi kullanılmaktadır.
    AutoMaskingArgs args = new AutoMaskingArgs();
    args.setObjectsPoints(new Point[][]
            {
                    new Point[] { new Point(100, 100), new Point(150, 100) },
                    new Point[] { new Point(500, 200) },
            });

    args.setObjectsRectangles( new Rectangle[] { new Rectangle(100, 100, 300, 300) });
    options.setArgs(args);
    results = new ImageMasking(image).decompose(options);
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

Example: Saving image masking result with feathering based on image size, modifying obtained default strokes and using it for the new masking iteration. Resim boyutuna göre feathering uygulanarak görüntü maskeleme sonucu kaydediliyor, elde edilen varsayılan darbeler değiştiriliyor ve yeni maskeleme yinelemesi için kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki varsayılan nesnenin verileri AutoMaskingGraphCutOptions’ın AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve yeni bir GraphCutMaskingOptions örneği kullanılarak başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.

Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

appliedBackgroundStrokes[5] = new Point(100, 100);
appliedBackgroundStrokes[15] = new Point(150, 100);

appliedForegroundStrokes[1] = new Point(500, 200);

appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        AutoMaskingArgs args = new AutoMaskingArgs();
        args.setObjectsPoints(new Point[][]
                {
                        appliedBackgroundStrokes,
                        appliedForegroundStrokes
                });

        args.setObjectsRectangles(appliedObjectRectangles);
                    
        GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions();
        graphCutOptions.setFeatheringRadius(3);
        graphCutOptions.setMethod(SegmentationMethod.GraphCut);
        graphCutOptions.setDecompose(false);
        graphCutOptions.setExportOptions(pngOptions);
        graphCutOptions.setBackgroundReplacementColor(Color.getTransparent());
        graphCutOptions.setArgs(args);
                    
        results = new ImageMasking(image).decompose(graphCutOptions);
    }
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

getAssumedObjects()

public final List<AssumedObjectData> getAssumedObjects()

Varsayılan nesneleri alır.

Returns: java.util.List<com.aspose.imaging.masking.options.AssumedObjectData> - varsayılan nesneler.

setAssumedObjects(List value)

public final void setAssumedObjects(List<AssumedObjectData> value)

Varsayılan nesneleri ayarlar.

Parameters:

ParametreTürAçıklama
değerjava.util.List<com.aspose.imaging.masking.options.AssumedObjectData>varsayılan nesneler.

getCalculateDefaultStrokes()

public final boolean getCalculateDefaultStrokes()

Varsayılan darbelerin hesaplanıp hesaplanmayacağını gösteren bir değeri alır.

Returns: boolean - varsayılan darbelerin hesaplanıp hesaplanmayacağını gösteren bir değer.

setCalculateDefaultStrokes(boolean value)

public final void setCalculateDefaultStrokes(boolean value)

Varsayılan darbelerin hesaplanıp hesaplanmayacağını gösteren bir değeri ayarlar.

Parameters:

ParametreTürAçıklama
değerbooleanvarsayılan darbelerin hesaplanıp hesaplanmayacağını gösteren bir değer.

Example: Saving image masking result with feathering based on image size. Görüntü boyutuna göre yumuşatma ile görüntü maskeleme sonucu kaydediliyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. AutoMaskingGraphCutOptions sınıfının Args özelliği, varsayılan darbeler sonunda oraya yerleştirildiği için atlanabilir. MaskingResult[] results;


MaskingResult[] results; 
            
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius((Math.max(image.getWidth(), image.getHeight()) / 500) + 1);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}
            

Example: Saving image masking result with feathering based on image size. Görüntü boyutuna göre yumuşatma ile görüntü maskeleme sonucu kaydediliyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki assumed objects’in verileri de AutoMaskingGraphCutOptions sınıfının AssumedObjects özelliğinde belirtilir.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius((Math.max(image.getWidth(), image.getHeight()) / 500) + 1);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}
            

Example: Saving image masking result with feathering based on image size and re-using masking options for the new masking iteration. Görüntü boyutuna göre yumuşatma ile görüntü maskeleme sonucu kaydediliyor ve yeni maskeleme yinelemesi için maskeleme seçenekleri yeniden kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki assumed objects’in verileri de AutoMaskingGraphCutOptions sınıfının AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.
Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    // AutoMaskingGraphCutOptions yeniden kullanıldığında varsayılan darbelerin hesaplamasını ikinci kez yapmaya gerek yoktur.
    options.setCalculateDefaultStrokes(false);
    // AutoMaskingArgs sınıfının Args özelliğinde hem varsayılan darbeler hem de ObjectsPoints sağlandığında, Point dizileri birleştirilir.
    // İlk ObjectsPoints dizisi bir arka plan nokta dizisi olarak kabul edilir ve
    // İkinci ObjectsPoints dizisi ön plan noktaları dizisi olarak kabul edilir.
    // AutoMaskingArgs'in Args özelliğinde hem DefaultObjectsRectangles hem de ObjectsRectangles sağlandığında,
    // yalnızca Args'tan gelen dizi kullanılmaktadır.
    AutoMaskingArgs args = new AutoMaskingArgs();
    args.setObjectsPoints(new Point[][]
            {
                    new Point[] { new Point(100, 100), new Point(150, 100) },
                    new Point[] { new Point(500, 200) },
            });

    args.setObjectsRectangles( new Rectangle[] { new Rectangle(100, 100, 300, 300) });
    options.setArgs(args);
    results = new ImageMasking(image).decompose(options);
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

Example: Saving image masking result with feathering based on image size, modifying obtained default strokes and using it for the new masking iteration. Resim boyutuna göre feathering uygulanarak görüntü maskeleme sonucu kaydediliyor, elde edilen varsayılan darbeler değiştiriliyor ve yeni maskeleme yinelemesi için kullanılıyor. Görüntü maskelemesi otomatik hesaplanan varsayılan darbeler kullanılarak gerçekleştirilir. Ayrıca iki varsayılan nesnenin verileri AutoMaskingGraphCutOptions’ın AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucu alındıktan sonra uygulanan arka plan/ön plan darbeleri değiştirilir ve yeni bir GraphCutMaskingOptions örneği kullanılarak başka bir maskeleme yinelemesi yapılır.

List<AssumedObjectData> assumedObjects = new LinkedList<AssumedObjectData>();
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions();
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        options.setAssumedObjects(assumedObjects);
        options.setCalculateDefaultStrokes(true);
        options.setFeatheringRadius(3);
        options.setMethod(SegmentationMethod.GraphCut);
        options.setDecompose(false);
        options.setExportOptions(pngOptions);
        options.setBackgroundReplacementColor(Color.getTransparent());

        results = new ImageMasking(image).decompose(options);
    }
}

// Bu noktada uygulanan ön plan/arka plan darbeleri analiz edilebilir ve buna dayanarak ek
// ön plan/arka plan darbeleri manuel olarak sağlanabilir.

Point[] appliedBackgroundStrokes = options.getDefaultBackgroundStrokes();
Point[] appliedForegroundStrokes = options.getDefaultForegroundStrokes();
Rectangle[] appliedObjectRectangles = options.getDefaultObjectsRectangles();
try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

appliedBackgroundStrokes[5] = new Point(100, 100);
appliedBackgroundStrokes[15] = new Point(150, 100);

appliedForegroundStrokes[1] = new Point(500, 200);

appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
    try (PngOptions pngOptions = new PngOptions())
    {
        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
        pngOptions.setSource(new FileCreateSource("tempFile"));

        AutoMaskingArgs args = new AutoMaskingArgs();
        args.setObjectsPoints(new Point[][]
                {
                        appliedBackgroundStrokes,
                        appliedForegroundStrokes
                });

        args.setObjectsRectangles(appliedObjectRectangles);
                    
        GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions();
        graphCutOptions.setFeatheringRadius(3);
        graphCutOptions.setMethod(SegmentationMethod.GraphCut);
        graphCutOptions.setDecompose(false);
        graphCutOptions.setExportOptions(pngOptions);
        graphCutOptions.setBackgroundReplacementColor(Color.getTransparent());
        graphCutOptions.setArgs(args);
                    
        results = new ImageMasking(image).decompose(graphCutOptions);
    }
}

try (RasterImage resultImage = (RasterImage)results[1].getImage())
{
    PngOptions pngOptions = new PngOptions();
    pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
    resultImage.save("output.png", pngOptions);
}

// kaynakları serbest bırak
for (MaskingResult res : results)
{
    res.close();
}

getPrecalculationProgressEventHandler()

public final ProgressEventHandler getPrecalculationProgressEventHandler()

Varsayılan noktaların ön hesaplama süreci ilerleme olay işleyicisini alır.

Değer: İlerleme olay işleyicisi.

Returns: ProgressEventHandler - the default points pre-calculation process progress event handler.

setPrecalculationProgressEventHandler(ProgressEventHandler value)

public final void setPrecalculationProgressEventHandler(ProgressEventHandler value)

Varsayılan noktaların ön hesaplama süreci ilerleme olay işleyicisini ayarlar.

Değer: İlerleme olay işleyicisi.

Parameters:

ParametreTürAçıklama
valueProgressEventHandlervarsayılan noktaların ön hesaplama süreci ilerleme olayı işleyicisi.