#image #jpeg #compare #quickly #aims #images-baseline #imeq-rs

程序+库 imeq

imeq旨在快速比较两张图片,以查看它们是否为同一张图片。

3个不稳定版本

0.1.0 2021年12月18日
0.0.2 2021年12月18日
0.0.1 2021年12月16日

#673 in 图像

MIT 许可证

11KB
119

imeq-rs旨在快速比较两张图片,以查看它们是否为同一张图片。

独立

安装

cargo install imeq

使用

USAGE:
    imeq <IMAGE_1> <IMAGE_2>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

ARGS:
    <IMAGE_1>    Sets the first image to use
    <IMAGE_2>    Sets the second image to use

基准测试

以下基准测试是在2020年M1 Mac Mini上进行的,该机器有16gb的ram和256gb的ssd,使用了hyperfine -w 3,该命令执行了3次(-w 3之外),并记录了第三次运行的结果。

baseline.jpegbaseline_by_another_name.jpeg应该相同,除了名称外。

flipped.jpeg已经水平翻转。

modified.jpeg已经被修改,使得最底部的右下角像素是红色的。

hyperfine -w 3 'target/release/imeq images/baseline.jpeg images/baseline.jpeg'

  Time (mean ± σ):       1.1 ms ±   0.3 ms    [User: 0.6 ms, System: 0.3 ms]
  Range (min … max):     0.8 ms …   2.6 ms    857 runs

hyperfine -w 3 'target/release/imeq images/baseline.jpeg images/baseline_by_another_name.jpeg'

  Time (mean ± σ):       5.5 ms ±   0.4 ms    [User: 7.4 ms, System: 2.3 ms]
  Range (min … max):     5.1 ms …   7.5 ms    308 runs

hyperfine -w 3 'target/release/imeq images/baseline.jpeg images/flipped.jpeg'

  Time (mean ± σ):      93.7 ms ±   3.4 ms    [User: 443.6 ms, System: 54.2 ms]
  Range (min … max):    90.4 ms … 102.8 ms    31 runs

hyperfine -w 3 'target/release/imeq images/baseline.jpeg images/modified.jpeg'

  Time (mean ± σ):     113.1 ms ±   0.9 ms    [User: 471.1 ms, System: 53.4 ms]
  Range (min … max):   111.4 ms … 115.5 ms    26 runs

作为库

安装

将以下行添加到您的Cargo.toml文件中

imeq = "0.1.0"

或者如果您已经安装了cargo edit

cargo add imeq

使用

let image_1 = "images/baseline.jpeg".to_string();

let image_2 = "images/modfied.jpeg".to_string();

let images_match = imeq::Compare::new(image_1, image_2)
    .enable_check_images_have_same_path()
    .enable_check_image_hashes_match()
    .enable_check_images_dimensions_match()
    .enable_check_images_pixels_match()
    .are_match();

if images_match {
    println!("Images are a match");
} else {
    println!("Images are not a match");
}

致谢

山羊图像 by Florian van Duyn

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅许可证文件

依赖项

~22MB
~311K SLoC