pub struct FlowField {
pub vectors: Vec<FlowVector>,
pub width: usize,
pub height: usize,
}Expand description
A dense optical flow field over a regular block grid.
Fields§
§vectors: Vec<FlowVector>Row-major vector storage (block_rows × block_cols).
width: usizeFrame width in pixels.
height: usizeFrame height in pixels.
Implementations§
Source§impl FlowField
impl FlowField
Sourcepub fn new(width: usize, height: usize, block_size: usize) -> Self
pub fn new(width: usize, height: usize, block_size: usize) -> Self
Create a new zeroed flow field for a frame of the given dimensions.
Sourcepub fn block_cols(&self, block_size: usize) -> usize
pub fn block_cols(&self, block_size: usize) -> usize
Number of block columns stored in this field.
Sourcepub fn block_rows(&self, block_size: usize) -> usize
pub fn block_rows(&self, block_size: usize) -> usize
Number of block rows stored in this field.
Sourcepub fn at(&self, x: usize, y: usize) -> &FlowVector
pub fn at(&self, x: usize, y: usize) -> &FlowVector
Return a reference to the flow vector at block column x, block row y.
§Panics
Panics if the index is out of bounds.
Sourcepub fn average_magnitude(&self) -> f32
pub fn average_magnitude(&self) -> f32
Arithmetic mean of the magnitudes of all flow vectors.
Returns 0.0 if the field is empty.
Sourcepub fn dominant_direction(&self) -> FlowVector
pub fn dominant_direction(&self) -> FlowVector
Return a single FlowVector representing the arithmetic mean of all
vectors (the dominant translation direction).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for FlowField
impl RefUnwindSafe for FlowField
impl Send for FlowField
impl Sync for FlowField
impl Unpin for FlowField
impl UnsafeUnpin for FlowField
impl UnwindSafe for FlowField
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.