1 个稳定版本

1.0.12 2022年2月21日
1.0.11 2022年2月3日
1.0.10 2022年1月15日
1.0.3 2021年8月3日
1.0.0 2020年3月15日

#399图像

每月 43 次下载
用于 raster2svg

EUPL-1.2

24KB
239

轮廓追踪库 包 文档

用于追踪轮廓的二维库。
在实时演示中的工作方式: https://stpr.github.io/contour_tracing/

特性

核心特性

  • 使用Theo Pavlidis算法追踪轮廓(连接性:4连通)
  • 按顺时针方向追踪轮廓
  • 按逆时针方向追踪轮廓中的空洞
  • 输入格式:位二维数组或图像缓冲区
  • 输出格式:SVG路径命令字符串

手动参数

  • 用户可以指定是否闭合路径(使用SVG路径Z命令)

位数组示例

  1. 将以下行添加到您的Cargo.toml文件中的依赖项部分
contour_tracing = { version = "*", features = ["array"] }
  1. 然后使用库
use contour_tracing::array::bits_to_paths;

fn main() {
    let bits = vec![vec![ 1,0,0 ],
                    vec![ 0,1,0 ],
                    vec![ 0,0,1 ]];

    println!("{}", bits_to_paths(bits, true));
}

图像缓冲区示例

  1. 将以下行添加到您的Cargo.toml文件中的依赖项部分
contour_tracing = { version = "*", features = ["image"] }
  1. 然后使用库
use image::{GrayImage, Luma};
use contour_tracing::image::single_l8_to_paths;

fn main() {
    let mut image_buffer = GrayImage::new(3, 3);
    let foreground_color: image::Luma<u8> = Luma([1]);

    image_buffer.put_pixel(0, 0, foreground_color);
    image_buffer.put_pixel(1, 1, foreground_color);
    image_buffer.put_pixel(2, 2, foreground_color);

    println!("{}", single_l8_to_paths(&mut image_buffer, foreground_color, true));
}

这两个示例都应该打印: M0 0H1V1H0ZM1 1H2V2H1ZM2 2H3V3H2Z

有关更多示例,请参阅文档: 文档

许可证

轮廓追踪库 https://github.com/STPR/contour_tracing

版权所有 (c) 2022, STPR - https://github.com/STPR

SPDX-License-Identifier: EUPL-1.2

贡献

我们非常欢迎您的贡献。请不要犹豫,提出问题或拉取请求。请注意,提交给项目包含的贡献将根据LICENSE.txt中给出的条款进行许可。

依赖项

~0–2.8MB
~11K SLoC