hs-hackathon-vision 0.1.4

Computer vision support crate for Helsing's Rust Nation hackathon
Documentation
pub(crate) mod raw;

use crate::raw::distance::centroid_distance;
use crate::raw::led_detector::get_leds;
use crate::raw::utils::draw_bounding_box;
use crate::raw::{BLUE, GREEN, RED};
use image::{DynamicImage, Rgba};
pub use raw::bounding_box::BoundingBox;
pub use raw::colors::Color;
pub use raw::led_detector::{Led, LedDetectionConfig};

/// Detect all LEDs that are visible in a given frame
pub fn detect(frame: &DynamicImage, configuration: &LedDetectionConfig) -> eyre::Result<Vec<Led>> {
    get_leds(frame, configuration)
}

/// Get distance between two LEDs
pub fn distance(led_1: &Led, led_2: &Led) -> u32 {
    centroid_distance(led_1.bbox, led_2.bbox)
}

pub fn draw_on_image(image: &mut DynamicImage, led: Led) {
    let color = match led.color {
        Color::Red => RED,
        Color::Green => GREEN,
        Color::Blue => BLUE,
        _ => panic!("Currently supported colours are red/blue/green"),
    };
    draw_bounding_box(image, led.bbox, Rgba(color));
}