DetectedObjectType
内容
[
隐藏
]Inheritance: java.lang.Object, com.aspose.ms.System.ValueType, com.aspose.ms.System.Enum
public final class DetectedObjectType extends System.Enum
检测到的对象类型枚举。
字段
| 字段 | 描述 |
|---|---|
| Human | 人类对象类型。 |
| Other | 其他对象类型。 |
Example: Saving image masking result with feathering based on image size.
根据图像尺寸进行羽化后保存图像掩码结果。图像掩码使用自动计算的默认笔画执行。此外,两个假定对象的数据也在 AutoMaskingGraphCutOptions 的 AssumedObjects 属性中指定。
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);
}
// 释放资源
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.
根据图像尺寸进行羽化后保存图像掩码结果,并在新的掩码迭代中重复使用掩码选项。图像掩码使用自动计算的默认笔画执行。此外,两个假定对象的数据也在 AutoMaskingGraphCutOptions 的 AssumedObjects 属性中指定。获取初始掩码结果后,已应用的背景/前景笔画被修改,并进行另一次掩码迭代。
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);
}
}
// 此时,可以分析已应用的前景/背景笔画,并基于此进行额外的
// 前景/背景笔画可以手动提供。
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);
}
// 释放资源
for (MaskingResult res : results)
{
res.close();
}
try (RasterImage image = (RasterImage)Image.load("input.jpg"))
{
// 重复使用 AutoMaskingGraphCutOptions 时,无需第二次执行默认笔画计算。
options.setCalculateDefaultStrokes(false);
// 当在 AutoMaskingArgs 的 Args 属性中同时提供默认笔画和 ObjectsPoints 时,点数组最终会合并。
// 第一个 ObjectsPoints 数组被视为背景点数组,并且
// 第二个 ObjectsPoints 数组被视为前景点数组。
// 当 AutoMaskingArgs 的 Args 属性中同时提供 DefaultObjectsRectangles 和 ObjectsRectangles 时,
// 仅使用来自 Args 的数组。
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);
}
// 释放资源
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.
保存基于图像尺寸的羽化图像遮罩结果,修改获得的默认笔画并将其用于新的遮罩迭代。图像遮罩使用自动计算的默认笔画执行。此外,两个假定对象的数据也在 AutoMaskingGraphCutOptions 的 AssumedObjects 属性中指定。获取初始遮罩结果后,已应用的背景/前景笔画被修改,并使用新的 GraphCutMaskingOptions 实例执行另一次遮罩迭代。
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);
}
}
// 此时,可以分析已应用的前景/背景笔画,并基于此进行额外的
// 前景/背景笔画可以手动提供。
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);
}
// 释放资源
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);
}
// 释放资源
for (MaskingResult res : results)
{
res.close();
}
Human
public static final int Human
人类对象类型。
Other
public static final int Other
其他对象类型。