#计算机视觉 #多边形 #图像 #图形 #顶点 #早期 #计算机视觉

rustvision

简单的库,用于与图像、顶点和多边形(以及一些与计算机视觉相关的其他内容)交互

2 个版本

0.1.1 2022 年 12 月 12 日
0.1.0 2022 年 12 月 6 日

#645 in 图像

LGPL-3.0

7MB
795

Rustvision

简单(且非常早期)的项目,用于与图像、顶点和多边形(以及一些与计算机视觉相关的其他内容)交互。

注意:此项目处于非常早期阶段,文档远非完美。请随时提交 PR 以进行改进!

安装

只需将此 crate 添加到您的 Cargo.toml 文件中(通过 cargo add 或手动添加)。

使用方法

此库的使用非常直接。首先,您需要创建一个新的图像。

use rustvision::image::Image;

fn main() {
    let mut img = Image::new(400, 400);
}

矩形

要处理一个简单的矩形,您可以导入并创建一个

use rustvision::{image::Image, shapes::Rectangle, rgb, vec2};

// ...
    let rect = Rectangle::new(vec2![50.0, 40.0], 100, 70, rgb!(255, 0, 0));
// ...

这将创建一个位于 x-y 坐标 (50.0, 40.0) 的新矩形实例,宽度为 100,高度为 70,颜色为红色。

您会注意到这里使用了两个宏:vec2![]rgb!()vec2![] 是一个实用宏,用于创建具有指定坐标的 2D 向量,而 rgb!() 为您创建一个新的 RGB 颜色。有关更多信息,请查看代码(或后续文档)。

如果您要将创建的矩形绘制到图像中,可以通过调用 img.draw 来实现

// ...
    img.draw(&rect);
// ...

这将绘制矩形到提供的图像中。最后,要使用另一个实用宏将图像保存到您的磁盘上

use rustvision::{image::Image, shapes::Rectangle, rgb, vec2, save_pnm_p6};

// ...
    save_pnm_p6!("path_to_image.ppm", img);
// ...

图像将以 P6(二进制 PPM)表示形式保存。如果您更喜欢 ASCII 表示形式(P3),此库也提供另一个实用宏。

多边形

与矩形类似,您可以创建更复杂的多边形

use rustvision::{image::Image, shapes::Polygon, vec2};

// ...
    let mut polygon = Polygon::from_points(vec![
        vec2![20.0, 250.0],
        vec2![50.0, 350.0],
        vec2![80.0, 280.0],
        vec2![110.0, 350.0],
        vec2![140.0, 250.0],
        vec2![110.0, 300.0],
        vec2![80.0, 250.0],
        vec2![50.0, 300.0],
    ]);
// ...

请注意,此“构造函数”不接收颜色。默认情况下,此多边形将是黑色。如果您想指定颜色,可以使用相应的方法来做到

use rustvision::{image::Image, shapes::Polygon, rgb, vec2};

// ...
    polygon.set_color(rgb!(0, 255, 0));
// ...

这将使多边形变为绿色。现在绘制此多边形只会绘制轮廓。要填充它,您需要手动设置标志

// ...
    polygon.set_filled(true);
// ...

与矩形类似,您可以将此多边形绘制到图像上

// ...
    img.draw(&polygon);
// ...

读取文件

您可以使用 load_image 宏读取文件并将它们转换为内部图像表示

use rustvision::{load_image, save_pnm_p3};

fn main() {
    let image = load_image!("assets/mona_lisa_small.ppm");
}

注意:目前,此库仅支持 PPM6(即二进制 PPM)格式的图像。尝试读取其他文件将导致崩溃!

无运行时依赖