2 个版本
0.1.1 | 2022 年 12 月 12 日 |
---|---|
0.1.0 | 2022 年 12 月 6 日 |
#645 in 图像
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)格式的图像。尝试读取其他文件将导致崩溃!