1 个稳定版本
3.3.2 | 2022年10月31日 |
---|
#7 in #perceptual
用于 2 个 crate (通过 egui-screenshot-testing)
48KB
838 行
visual-hash
img_hash 的分支
一个获取图像感知哈希值的库。
感谢 Dr. Neal Krawetz 提供了均值(aHash)、梯度(dHash)和 DCT(pHash)感知哈希算法的轮廓。
http://www.hackerfactor.com/blog/?/archives/432-Looks-Like-It.html (2014年8月访问)
还提供了 Blockhash.io 算法 的实现。
此 crate 可以直接操作来自 PistonDevelopers/image crate 的缓冲区。
用法
将 visual-hash
添加到您的 Cargo.toml
[dependencies.visual-hash]
version = "3.0"
示例程序
use clap::Parser;
use visual_hash::HasherConfig;
#[derive(Clone, Debug, Parser)]
struct Args {
left: String,
right: String,
}
fn main() {
let args = Args::parse();
if let Err(e) = run(&args) {
eprintln!("{e}");
std::process::exit(1);
}
}
fn run(args: &Args) -> anyhow::Result<()> {
let image1 = image::open(&args.left)?;
let image2 = image::open(&args.right)?;
let hasher = HasherConfig::new().to_hasher();
let hash1 = hasher.hash_image(&image1);
let hash2 = hasher.hash_image(&image2);
println!("Image1 hash: {}", hash1.to_base64());
println!("Image2 hash: {}", hash2.to_base64());
println!("Hamming Distance: {}", hash1.dist(&hash2));
Ok(())
}
基准测试
为了在 Rust 稳定版上构建和测试,基准测试必须放在功能门后面。如果您已安装 Rust 夜间版并想运行基准测试,请使用以下命令
cargo bench --features bench
许可证
根据以下任一许可证授权:
- Apache 许可证,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,任何有意提交以包含在您的工作中的贡献,都将根据上述双许可方式授权,没有任何附加条款或条件。
依赖项
~14MB
~112K SLoC