use std::path::PathBuf;
use image::imageops::FilterType;
pub const ENV_MODEL_PATH: &str = "OUTLINE_MODEL_PATH";
pub const DEFAULT_MODEL_PATH: &str = "model.onnx";
#[derive(Debug, Clone)]
pub struct InferenceSettings {
pub model_path: PathBuf,
pub input_resize_filter: FilterType,
pub output_resize_filter: FilterType,
pub intra_threads: Option<usize>,
}
impl InferenceSettings {
pub fn new(model_path: impl Into<PathBuf>) -> Self {
Self {
model_path: model_path.into(),
input_resize_filter: FilterType::Triangle,
output_resize_filter: FilterType::Lanczos3,
intra_threads: None,
}
}
pub fn with_input_resize_filter(mut self, filter: FilterType) -> Self {
self.input_resize_filter = filter;
self
}
pub fn with_output_resize_filter(mut self, filter: FilterType) -> Self {
self.output_resize_filter = filter;
self
}
pub fn with_intra_threads(mut self, intra_threads: Option<usize>) -> Self {
self.intra_threads = intra_threads;
self
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct MaskProcessingOptions {
pub binary: bool,
pub blur: bool,
pub blur_sigma: f32,
pub mask_threshold: u8,
pub dilate: bool,
pub dilation_radius: f32,
pub fill_holes: bool,
}
impl Default for MaskProcessingOptions {
fn default() -> Self {
Self {
binary: false,
blur: false,
blur_sigma: 6.0,
mask_threshold: 120,
dilate: false,
dilation_radius: 5.0,
fill_holes: false,
}
}
}