1use crate::{Result, Size, MatType};
4
5pub trait Dimensioned {
7 fn width(&self) -> i32;
9 fn height(&self) -> i32;
11 fn size(&self) -> Size;
13}
14
15pub trait ImageTrait: Dimensioned {
17 fn image_type(&self) -> MatType;
19 fn channels(&self) -> i32;
21 fn is_empty(&self) -> bool;
23}
24
25pub trait ArrayConvertible<T, const N: usize> {
27 fn to_array(&self) -> [T; N];
29 fn from_array(arr: [T; N]) -> Self;
31}
32
33pub trait Arithmetic: Sized {
35 fn add(&self, other: &Self) -> Result<Self>;
37 fn sub(&self, other: &Self) -> Result<Self>;
39 fn mul_scalar(&self, scalar: f64) -> Result<Self>;
41 fn div_scalar(&self, scalar: f64) -> Result<Self>;
43}