pub struct MaskHandle { /* private fields */ }Expand description
Processed mask image with optional further refinement and output generation.
Represents a concrete mask image (typically binary after thresholding) produced by executing
operations from a MatteHandle.
§Example
use outline::{Outline, VtracerSvgVectorizer, TraceOptions};
let outline = Outline::new("model.onnx");
let session = outline.for_image("input.jpg")?;
let mask = session.matte().blur().threshold().processed()?;
// Generate multiple outputs from the mask
mask.save("mask.png")?;
mask.foreground()?.save("subject.png")?;
let vectorizer = VtracerSvgVectorizer;
let svg = mask.trace(&vectorizer, &TraceOptions::default())?;
std::fs::write("outline.svg", svg)?;Implementations§
Source§impl MaskHandle
impl MaskHandle
Sourcepub fn into_image(self) -> GrayImage
pub fn into_image(self) -> GrayImage
Consume the handle and return the mask.
Sourcepub fn save(&self, path: impl AsRef<Path>) -> OutlineResult<()>
pub fn save(&self, path: impl AsRef<Path>) -> OutlineResult<()>
Save the mask to the specified path.
Sourcepub fn threshold_with(self, value: u8) -> Self
pub fn threshold_with(self, value: u8) -> Self
Add a threshold operation with a custom value.
Sourcepub fn dilate(self) -> Self
pub fn dilate(self) -> Self
Add a dilation operation using the default radius.
Note: Dilation typically works best on binary masks. If this mask is still grayscale,
consider calling threshold first.
Sourcepub fn dilate_with(self, radius: f32) -> Self
pub fn dilate_with(self, radius: f32) -> Self
Add a dilation operation with a custom radius.
Note: Dilation typically works best on binary masks. If this mask is still grayscale,
consider calling threshold first.
Sourcepub fn fill_holes(self) -> Self
pub fn fill_holes(self) -> Self
Add a hole-filling operation to the processing pipeline.
Note: Hole-filling typically works best on binary masks. If this mask is still grayscale,
consider calling threshold first.
Sourcepub fn processed(self) -> OutlineResult<MaskHandle>
pub fn processed(self) -> OutlineResult<MaskHandle>
Process the mask with the accumulated operations and default options.
Sourcepub fn processed_with(
self,
options: &MaskProcessingOptions,
) -> OutlineResult<MaskHandle>
pub fn processed_with( self, options: &MaskProcessingOptions, ) -> OutlineResult<MaskHandle>
Process the mask with the accumulated operations and custom options.
Sourcepub fn foreground(&self) -> OutlineResult<ForegroundHandle>
pub fn foreground(&self) -> OutlineResult<ForegroundHandle>
Compose the RGBA foreground image from the RGB image and the current mask.
Sourcepub fn trace<V>(
&self,
vectorizer: &V,
options: &V::Options,
) -> OutlineResult<V::Output>where
V: MaskVectorizer,
pub fn trace<V>(
&self,
vectorizer: &V,
options: &V::Options,
) -> OutlineResult<V::Output>where
V: MaskVectorizer,
Trace the current mask using the specified vectorizer and options.
Trait Implementations§
Source§impl Clone for MaskHandle
impl Clone for MaskHandle
Source§fn clone(&self) -> MaskHandle
fn clone(&self) -> MaskHandle
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for MaskHandle
impl RefUnwindSafe for MaskHandle
impl Send for MaskHandle
impl Sync for MaskHandle
impl Unpin for MaskHandle
impl UnsafeUnpin for MaskHandle
impl UnwindSafe for MaskHandle
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.