yscv-track 0.1.8

Multi-object tracking with DeepSORT, ByteTrack, and Kalman filter
Documentation
use crate::TrackError;

#[derive(Debug, Clone, Copy, PartialEq)]
pub struct TrackerConfig {
    pub match_iou_threshold: f32,
    pub max_missed_frames: u32,
    pub max_tracks: usize,
}

impl Default for TrackerConfig {
    fn default() -> Self {
        Self {
            match_iou_threshold: 0.3,
            max_missed_frames: 10,
            max_tracks: 1024,
        }
    }
}

impl TrackerConfig {
    pub fn validate(&self) -> Result<(), TrackError> {
        if !self.match_iou_threshold.is_finite() || !(0.0..=1.0).contains(&self.match_iou_threshold)
        {
            return Err(TrackError::InvalidIouThreshold {
                value: self.match_iou_threshold,
            });
        }
        if self.max_tracks == 0 {
            return Err(TrackError::InvalidMaxTracks { value: 0 });
        }
        Ok(())
    }
}