Skip to main content

yscv_track/
config.rs

1use crate::TrackError;
2
3#[derive(Debug, Clone, Copy, PartialEq)]
4pub struct TrackerConfig {
5    pub match_iou_threshold: f32,
6    pub max_missed_frames: u32,
7    pub max_tracks: usize,
8}
9
10impl Default for TrackerConfig {
11    fn default() -> Self {
12        Self {
13            match_iou_threshold: 0.3,
14            max_missed_frames: 10,
15            max_tracks: 1024,
16        }
17    }
18}
19
20impl TrackerConfig {
21    pub fn validate(&self) -> Result<(), TrackError> {
22        if !self.match_iou_threshold.is_finite() || !(0.0..=1.0).contains(&self.match_iou_threshold)
23        {
24            return Err(TrackError::InvalidIouThreshold {
25                value: self.match_iou_threshold,
26            });
27        }
28        if self.max_tracks == 0 {
29            return Err(TrackError::InvalidMaxTracks { value: 0 });
30        }
31        Ok(())
32    }
33}