4 个版本
0.2.0 | 2022年11月22日 |
---|---|
0.1.2 | 2022年9月20日 |
0.1.1 | 2022年8月14日 |
0.1.0 | 2022年8月12日 |
#891 in 图像
18KB
317 代码行
mat2image
Rust crate 提供了 ToImage
特性。
它实现了 ToImage
,用于将 Mat 转换为 DynamicImage。
它还公开了 ToImageUnsafe
。这种做法源于通过 分析 发现 Mat::iter 非常慢。然后使用 Mat::data 访问原始数据来实现 Mat::to_image_unsafe
。
运行示例
保存为
此示例使用 opencv 读取图像(examples/tinta_helada.jpg),并使用 image API 保存。
cargo run --release --example save_as [output_name[.jpg]=out.jpg]
分析
当发现 to_image
花费太多时间时,我使用 perf
进行分析,并使用 Firefox Profiler 进行可视化。
完整分析
# 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
然后在 Firefox Profiler 中加载。
参考
备注
- 我们能否以低成本将 BGR 转换为 RGB? - 看起来无法做到:image#1723
- cv-convert 还没有实现 Mat -> DynamicImage 的功能。已经提出了一个 问题,以将此代码合并到 cv_convert。
依赖
~14MB
~93K SLoC