nuscenes_data_opencv/
lib.rs

1use nuscenes_data::{
2    dataset::{MapRef, SampleDataRef},
3    serializable::FileFormat,
4};
5use opencv::{
6    self as cv,
7    imgcodecs::{imread, IMREAD_COLOR},
8    prelude::*,
9};
10
11pub mod prelude {
12    pub use super::{MapRefImageExt, SampleDataRefImageExt};
13}
14
15pub trait MapRefImageExt {
16    fn load_opencv_mat(&self) -> cv::Result<Mat>;
17}
18
19impl MapRefImageExt for MapRef {
20    fn load_opencv_mat(&self) -> cv::Result<Mat> {
21        let path = format!("{}", self.path().display());
22        imread(&path, IMREAD_COLOR)
23    }
24}
25
26pub trait SampleDataRefImageExt {
27    fn load_opencv_mat(&self) -> cv::Result<Option<Mat>>;
28}
29
30impl SampleDataRefImageExt for SampleDataRef {
31    fn load_opencv_mat(&self) -> cv::Result<Option<Mat>> {
32        if self.fileformat != FileFormat::Jpg {
33            return Ok(None);
34        }
35
36        let path = format!("{}", self.path().display());
37        let mat = imread(&path, IMREAD_COLOR)?;
38        Ok(Some(mat))
39    }
40}