#转换 #图像 #mat #动态图像 #opencv #原始数据 #数据

mat2image

将 opencv::Mat 转换为 image::DynamicImage 的工具

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 图像

MIT 许可证

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