1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
// extern crate nuscenes_data;
use image::GenericImageView;
use nuscenes_data::{error::NuScenesDataResult, LoadedSampleData, NuScenesDataset};
fn main() -> NuScenesDataResult<()> {
// Change the path to your dataset directory
let dataset = NuScenesDataset::load("1.02", "/some/path/v1.02-train")?;
// Iterate over scenes chronologically
for scene in dataset.scene_iter() {
println!("read scene {}", scene.token);
// Get associated log
let log = scene.log();
println!("captured at {}", log.date_captured);
// Iterate over associated samples
for sample in scene.sample_iter() {
println!(
"found sample {} in scene {} with timestamp {}",
sample.token, scene.token, sample.timestamp
);
// Get the related scene back from sample
assert_eq!(scene.token, sample.scene_token);
assert_eq!(scene.token, sample.scene().token);
// Iterate over associated annotations
for annotation in sample.sample_annotation_iter() {
println!(
"found annotation {} in sample {}",
annotation.token, sample.token,
);
}
// Iterate over associated data
for data in sample.sample_data_iter() {
println!("found data {} in sample {}", data.token, sample.token);
// Load data
match data.load()? {
LoadedSampleData::PointCloud(matrix) => {
println!(
"get point cloud from data {} with {} points",
data.token,
matrix.nrows()
);
}
LoadedSampleData::Image(image) => {
println!(
"get image from data {} with shape {}x{}",
data.token,
image.width(),
image.height()
);
}
}
}
}
}
Ok(())
}