1 个不稳定版本
0.25.0 | 2024 年 5 月 9 日 |
---|
#451 在 图像
125KB
2.5K SLoC
cv-convert: 将 Rust 中的计算机视觉数据类型进行转换
著名 Rust 计算机视觉库之间的类型转换。它支持以下crate
使用方法
运行 cargo add cv-convert
将此crate添加到您的项目中。在默认设置下,使用最新的依赖版本。
如果您希望启用指定的依赖版本,请添加 default-features = false
并选择crate版本作为Cargo功能。例如,功能 nalgebra_0-30
启用 nalgebra 0.30.x。
[dependencies.cv-convert]
version = 'x.y.z' # Please look up the recent version on crates.io
default-features = false
features = [
'image_0-24',
'opencv_0-84',
'tch_0-13',
'nalgebra_0-32',
'ndarray_0-15',
]
最低支持的 rustc
是 1.51。您可以使用 crate 的较旧版本(>=0.6)以使用不支持 const-generics 的 rustc
版本。
Cargo 功能
opencv
opencv_0-84
opencv_0-83
opencv_0-82
opencv_0-81
opencv_0-80
opencv_0-79
opencv_0-78
opencv_0-77
opencv_0-76
opencv_0-75
opencv_0-74
opencv_0-73
opencv_0-72
opencv_0-71
opencv_0-70
opencv_0-69
opencv_0-68
opencv_0-67
opencv_0-66
opencv_0-65
opencv_0-64
opencv_0-63
image
image_0-24
image_0-23
imageproc
imageproc_0-23
ndarray
ndarray_0-15
nalgebra
nalgebra_0-32
nalgebra_0-31
nalgebra_0-30
nalgebra_0-29
nalgebra_0-28
nalgebra_0-27
nalgebra_0-26
tch
tch_0-13
使用方法
该crate提供了 FromCv
、TryFromCv
、IntoCv
、TryIntoCv
特性,它们类似于标准库的 From
和 Into
。
use cv_convert::{FromCv, IntoCv, TryFromCv, TryIntoCv};
use nalgebra as na;
use opencv as cv;
// FromCv
let cv_point = cv::core::Point2d::new(1.0, 3.0);
let na_points = na::Point2::<f64>::from_cv(&cv_point);
// IntoCv
let cv_point = cv::core::Point2d::new(1.0, 3.0);
let na_points: na::Point2<f64> = cv_point.into_cv();
// TryFromCv
let na_mat = na::DMatrix::from_vec(2, 3, vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0]);
let cv_mat = cv::core::Mat::try_from_cv(&na_mat)?;
// TryIntoCv
let na_mat = na::DMatrix::from_vec(2, 3, vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0]);
let cv_mat: cv::core::Mat = na_mat.try_into_cv()?;
为该项目贡献力量
添加新的依赖版本
例如,要添加cv-convert的新版nalgebra 0.32,请打开源代码仓库中的cv-convert-generate/packages.toml
。按照以下方式添加新版本到列表中。
[package.nalgebra]
versions = ["0.26", "0.27", "0.28", "0.29", "0.30", "0.31", "0.32"]
use_default_features = true
features = []
在顶层目录中运行make generate
。它将自动修改Rust源文件。额外一步是将cv-convert/generated/Cargo.toml.snipplet
中的片段复制并粘贴到cv-convert/Cargo.toml
。
添加新的类型转换
例如,要添加新的类型转换,可以取image::DynamicImage
和opencv::Mat
。前往cv-convert/src
并在with_opencv_image.rs
中实现代码,因为这是opencv和image crates之间的转换。
选择FromCv
或TryFromCv
特质,并在image::DynamicImage
和opencv::Mat
类型上添加特质的实现。选择FromCv
或TryFromCv
取决于转换是否可能失败。
impl FromCv<&image::DynamicImage> for opencv::Mat { /* omit */ }
impl FromCv<&opencv::Mat> for image::DynamicImage { /* omit */ }
// or
impl TryFromCv<&image::DynamicImage> for opencv::Mat { /* omit */ }
impl TryFromCv<&opencv::Mat> for image::DynamicImage { /* omit */ }
#[cfg(test)]
mod tests {
// Write a test
}
许可证
MIT许可证。见LICENSE文件。
依赖关系
~28MB
~487K SLoC