use crate::utils::bbox::Universal2DBox;
use pyo3::prelude::*;
pub mod metric;
pub mod voting;
pub mod track_attributes;
pub mod observation_attributes;
pub mod simple_api;
pub mod visual_sort_py;
#[derive(Debug, Clone)]
pub struct VisualObservation<'a> {
feature: Option<&'a Vec<f32>>,
feature_quality: Option<f32>,
bounding_box: Universal2DBox,
custom_object_id: Option<i64>,
}
impl<'a> VisualObservation<'a> {
pub fn new(
feature: Option<&'a Vec<f32>>,
feature_quality: Option<f32>,
bounding_box: Universal2DBox,
custom_object_id: Option<i64>,
) -> Self {
Self {
feature,
feature_quality,
bounding_box,
custom_object_id,
}
}
}
#[derive(Debug, Clone)]
#[pyclass]
#[pyo3(name = "WastedVisualSortTrack")]
pub struct PyWastedVisualSortTrack {
#[pyo3(get)]
pub id: u64,
#[pyo3(get)]
pub epoch: usize,
#[pyo3(get)]
pub predicted_bbox: Universal2DBox,
#[pyo3(get)]
pub observed_bbox: Universal2DBox,
#[pyo3(get)]
pub scene_id: u64,
#[pyo3(get)]
pub length: usize,
#[pyo3(get)]
pub predicted_boxes: Vec<Universal2DBox>,
#[pyo3(get)]
pub observed_boxes: Vec<Universal2DBox>,
#[pyo3(get)]
pub observed_features: Vec<Option<Vec<f32>>>,
}
#[pymethods]
impl PyWastedVisualSortTrack {
#[classattr]
const __hash__: Option<Py<PyAny>> = None;
fn __repr__(&self) -> String {
format!("{:?}", self)
}
fn __str__(&self) -> String {
format!("{:#?}", self)
}
}