我有2个包含10k和35k图像的图像文件夹。每个图像的大小大约为(2k,2k)。
我想删除完全相同的图像。
不同图像的变化只是某些像素的变化。
我尝试过DHashing,PHashing,AHashing,但是由于它们是有损图像哈希技术,因此它们也为非重复图像提供了相同的哈希。
我也尝试用python编写代码,该代码只会减去图像,并且组合的结果数组在任何地方都不为零,从而使这些图像对相互重复。
但是,单个组合的时间为0.29秒,而总计3.5亿个组合的时间确实非常庞大。
有没有一种方法可以更快地做到这一点,同时也不必标记非重复的图像。
我愿意用任何可以准确解决我的问题的语言(C,C++),任何方法(分布式计算,多线程)进行操作。
抱歉,如果我添加了一些不相关的方法,因为我不是计算机科学背景的人。
以下是我用于python方法的代码-
start = timeit.default_timer()
dict = {}
for i in path1:
img1 = io.imread(i)
base1 = os.path.basename(i)
for j in path2:
img2 = io.imread(j)
base2 = os.path.basename(j)
if np.array_equal(img1, img2):
err = img1.astype('float') - img2.astype('float')
is_all_zero = np.all((err == 0))
if is_all_zero:
dict[base1] = base2
else:
continue
stop = timeit.default_timer()
print('Time: ', stop - start)
最佳答案
您应该找到有关如何删除重复文件(不仅是图像)的答案。然后,您可以使用例如fdupes
或找到其他替代软件:https://alternativeto.net/software/fdupes/
关于python - 以最快的方式查找重复的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63195790/