use crate::ImageBuffer;
pub trait ComputerVision {
fn grayscale(src: &ImageBuffer, dst: &mut [u8]);
fn threshold(src: &[u8], dst: &mut [u8], threshold: u8);
fn otsu(src: &[u8]) -> u8;
fn stack_box_blur(src: &ImageBuffer, dst: &mut [u8], kernel_size: usize);
fn adaptive_threshold(src: &ImageBuffer, dst: &mut [u8], kernel_size: usize, threshold: u8);
fn warp(src: &ImageBuffer, dst: &mut [u8], contour: &[crate::Point2f; 4], warp_size: usize);
fn count_non_zero(src: &ImageBuffer, square: &Square) -> usize;
fn gaussian_blur(src: &ImageBuffer, dst: &mut [u8], kernel_size: usize);
}
#[derive(Debug, Clone, Copy)]
pub struct Square {
pub x: u32,
pub y: u32,
pub width: u32,
pub height: u32,
}
pub mod contours;
pub mod geometry;
pub mod scalar;