gpt4 book ai didi

java - 比较图像以查找重复项

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:53:06 25 4
gpt4 key购买 nike

我的文件夹中有几个 (38000) 图片/视频文件。其中大约 40% 是我试图摆脱的重复项。我的问题是,如何判断 2 个文件是否相同?到目前为止,我尝试使用文件的 SHA1,但事实证明许多重复文件具有不同的哈希值。这是我使用的代码:

public static String getHash(File doc) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA1");
FileInputStream inStream = new FileInputStream(doc);
DigestInputStream dis = new DigestInputStream(inStream, md);
BufferedInputStream bis = new BufferedInputStream(dis);
while (true) {
int b = bis.read();
if (b == -1)
break;
}

inStream.close();
dis.close();
bis.close();
} catch (NoSuchAlgorithmException | IOException e) {
e.printStackTrace();
}

BigInteger bi = new BigInteger(md.digest());

return bi.toString(16);
}

我能以任何方式修改它吗?或者我必须使用不同的方法吗?

最佳答案

如上所述,重复检测可以基于哈希。然而,如果你想进行近似重复检测,这意味着你正在搜索基本上显示相同内容但已经缩放、旋转等的图像,你可能需要一种基于内容的图像检索方法。有 LIRE ( https://code.google.com/p/lire/ ),这是一个 Java 库,您可以在下载部分找到“SimpleApplication”。然后你可以做的是

  1. 索引第一张图片
  2. 转到下一张图片我
  3. 在索引中搜索I
  4. 如果有分数低于阈值的结果,则将其标记为重复
  5. 索引一
  6. 转到 (2)

我的学生做过,效果很好,但我手头没有源代码。但请放心,这只是几行,简单的应用程序将帮助您入门。

关于java - 比较图像以查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17282272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com