2 个版本

使用旧的 Rust 2015

0.1.1 2018 年 9 月 5 日
0.1.0 2018 年 9 月 5 日

#16 in #轮廓

MIT 许可证

24KB
552

Rust 的超像素

这个软件包包含将图像分割成感知相似区域的算法。

目前只有一个实现

示例命令行用法

cargo run --features="build-binary" -- \
    --outline-image=assets/hawaii_outline.jpg assets/hawaii.jpg

Test image Segmented Test image

库用法

superpixel 可执行文件是一个相对紧凑的示例。这个软件包期望图像格式与 image 软件包兼容,特别是 image::DynamicImage::Rgb8

extern crate superpixel;
extern crate image;

use std::vec::Vec;
use std::iter::repeat;
use std::time::Instant;

use image::DynamicImage;

use superpixel::{LABColor,rgb_to_lab_image,do_segmentation_with_num_superpixels,save_image_with_segment_boundaries};

...

let img : image:DynamicImage::Rgb8 = ...; // get your image from somewhere

// SLIC operates on LAB space
let mut lab_vec : Vec<LABColor> = repeat(Default::default()).take((img.width() * img.height()) as usize).collect();
rgb_to_lab_image(&img, &mut lab_vec);

let num_patches = 9000;
let compactness = 20;
let iterations = 10;

// klabels has the pixel labelling to segment id
let mut klabels : Vec<i32> = vec![];
// while 9000 superpixels/patches are requested, the exact number may differ so the actual number is returned
let num_superpixels = do_segmentation_with_num_superpixels(
    &img, &mut lab_vec,
    img.width(), img.height(),
    &mut klabels,
    num_patches, compactness, iterations);

// debug image for showing where segment boundaries are
let outline_fn = "test.png";
let outline_color = image::Rgb([255u8, 255u8, 255u8]);
save_image_with_segment_boundaries(&img, &klabels, &outline_fn, &outline_color);

Windows

在 Windows 上开发时 - 如果你已安装 64 位库和 64 位 MSVC rust,你需要在运行 cargo build 之前做以下操作:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64

...

许可证

MIT

依赖项

~4MB
~92K SLoC