Skip to content

Commit 4472ef2

Browse files
authored
add progress bar (#5)
1 parent 31e139e commit 4472ef2

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "camera-intrinsic-calibration"
3-
version = "0.4.1"
3+
version = "0.4.2"
44
edition = "2021"
55
authors = ["Powei Lin <poweilin1994@gmail.com>"]
66
readme = "README.md"
@@ -22,6 +22,7 @@ faer = "0.19.4"
2222
glam = "0.29.2"
2323
glob = "0.3.1"
2424
image = "0.25.5"
25+
indicatif = { version = "0.17.9", features = ["rayon"] }
2526
log = "0.4.22"
2627
nalgebra = "0.33.2"
2728
num-dual = "0.10.3"

src/data_loader.rs

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use aprilgrid::detector::TagDetector;
88
use glam::Vec2;
99
use glob::glob;
1010
use image::{DynamicImage, ImageReader};
11+
use indicatif::ParallelProgressIterator;
1112
use rayon::prelude::*;
1213

1314
const MIN_CORNERS: usize = 24;
@@ -74,14 +75,17 @@ pub fn load_euroc(
7475
let img_paths =
7576
glob(format!("{}/mav0/cam{}/data/*.png", root_folder, cam_idx).as_str())
7677
.expect("failed");
77-
let mut time_frame: Vec<_> = img_paths
78-
.skip(start_idx)
79-
.step_by(step)
78+
let mut sorted_path: Vec<_> = img_paths.collect();
79+
sorted_path.sort_by(|a, b| a.as_ref().unwrap().cmp(b.as_ref().unwrap()));
80+
let new_paths: Vec<_> = sorted_path.iter().skip(start_idx).step_by(step).collect();
81+
let mut time_frame: Vec<_> = new_paths
82+
.iter()
8083
.par_bridge()
84+
.progress_count(new_paths.len() as u64)
8185
.map(|path| {
82-
let path = path.unwrap();
83-
let time_ns = path_to_timestamp(&path);
84-
let img = ImageReader::open(&path).unwrap().decode().unwrap();
86+
let path = path.as_ref().unwrap();
87+
let time_ns = path_to_timestamp(path);
88+
let img = ImageReader::open(path).unwrap().decode().unwrap();
8589
if let Some(recording) = recording_option {
8690
recording.set_time_nanos("stable", time_ns);
8791
let topic = format!("/cam{}", cam_idx);
@@ -119,15 +123,22 @@ pub fn load_others(
119123
let img_paths = glob(format!("{}/**/cam{}/**/*.png", root_folder, cam_idx).as_str())
120124
.expect("failed");
121125
log::trace!("loading cam{}", cam_idx);
122-
let mut time_frame: Vec<_> = img_paths
126+
let mut sorted_path: Vec<_> = img_paths.collect();
127+
sorted_path.sort_by(|a, b| a.as_ref().unwrap().cmp(b.as_ref().unwrap()));
128+
let new_paths: Vec<_> = sorted_path
129+
.iter()
123130
.skip(start_idx)
124131
.step_by(step)
125132
.enumerate()
133+
.collect();
134+
let mut time_frame: Vec<_> = new_paths
135+
.iter()
126136
.par_bridge()
137+
.progress_count(new_paths.len() as u64)
127138
.map(|(idx, path)| {
128-
let path = path.unwrap();
129-
let time_ns = idx as i64 * 100000000;
130-
let img = ImageReader::open(&path).unwrap().decode().unwrap();
139+
let path = path.as_ref().unwrap();
140+
let time_ns = *idx as i64 * 100000000;
141+
let img = ImageReader::open(path).unwrap().decode().unwrap();
131142
if let Some(recording) = recording_option {
132143
recording.set_time_nanos("stable", time_ns);
133144
let topic = format!("/cam{}", cam_idx);

0 commit comments

Comments
 (0)