4 releases
0.2.0 | Nov 22, 2022 |
---|---|
0.1.2 | Sep 20, 2022 |
0.1.1 | Aug 14, 2022 |
0.1.0 | Aug 12, 2022 |
#864 in Images
26 downloads per month
18KB
317 lines
mat2image
Rust crate that exposes ToImage
trait.
It implements ToImage
for
Mat to convert it
into DynamicImage.
It also exposes ToImageUnsafe
. The rationale behind this, comes after learning
through profiling that
Mat::iter
is painfully slow. Then Mat::to_image_unsafe
is implemented using
Mat::data
accessing the raw data.
Running examples
Save as
This example reads an image (examples/tinta_helada.jpg) using opencv and saves it using image API.
cargo run --release --example save_as [output_name[.jpg]=out.jpg]
Profiling
When noticing that to_image
takes too much time, I profiled using perf
and
visualized it with Firefox Profiler.
Full profiling:
# build example with debug symbols
cargo build --example save_as
# record perf data
# sudo because of `paranoid` kernel setting
sudo perf record -g -F 999 ./target/debug/examples/save_as
# convert output to firefox readable type
sudo perf script -F +pid >save_as.perf
Then load it in Firefox Profiler.
References
Notes
- Can we convert BGR to RGB cheaply? - Seems like it can't be done: image#1723
- cv-convert does not have implementation for Mat -> DynamicImage yet. There is an issue raised to merge this code into cv_convert.
Dependencies
~15MB
~94K SLoC