gpt4 book ai didi

image - 比较图像并删除重复项

转载 作者:行者123 更新时间:2023-12-02 18:21:42 25 4
gpt4 key购买 nike

我有两个包含图像的文件夹,它们都是 PNG。一个文件夹是另一个文件夹的副本,其中更改了一些图像并添加了一些图像。文件名相同,但图像内容可能不同。不幸的是,其他属性(例如时间戳)是完全随机的。

我想在较新的文件夹中删除重复项(按内容)并仅保留更新的和新的。

我安装了 ImageMagick 来使用比较命令,但我无法弄清楚。 :-( 你能帮我吗?提前致谢!

补充:我使用的是 Mac OS X。

最佳答案

你没有说你是在 OSX/Linux 还是 Windows,但是,我可以帮助你开始。 ImageMagick 可以计算图像中所有像素数据的哈希(校验和),无论日期或时间戳如何,如下所示

identify -format "%# %f\n" *.png

25a3591a58550edd2cff65081eab11a86a6a62e006431c8c4393db8d71a1dfe4 blue.png
304c0994c751e75eac86bedac544f716560be5c359786f7a5c3cd6cb8d2294df green.png
466f1bac727ac8090ba2a9a13df8bfb6ada3c4eb3349087ce5dc5d14040514b5 grey.png
042a7ebd78e53a89c0afabfe569a9930c6412577fcf3bcfbce7bafe683e93e8a hue.png
d819bfdc58ac7c48d154924e445188f0ac5a0536cd989bdf079deca86abb12a0 lightness.png
b63ad69a056033a300f23c31f9425df6f469e79c2b9f3a5c515db3b52c323a65 montage.png
a42a5f0abac3bd2f6b4cbfde864342401847a120dacae63294edb45b38edd34e red.png
10bf63fd725c5e02c56df54f503d0544f14f754d852549098d5babd8d3daeb84 sample.png
e95042f227d2d7b2b3edd4c7eec05bbf765a09484563c5ff18bc8e8aa32c1a8e sat.png

因此,如果您在每个文件夹中执行此操作,您将在每个文件夹的单独文件中获得所有文件的校验和及其名称。

如果您随后合并两个文件并对它们进行排序,您可以很容易地找到重复项,因为重复的文件将彼此相邻。

假设您在两个文件夹 diradirb 中运行上述命令,如下所示

cd dira
identify -format "%# %f\n" *.png > $HOME/dira

cd dirb
identify -format "%# %f\n" *.png > $HOME/dirb

然后你可以在awk中做类似的事情

awk 'FNR==NR{name[$1]=$2;next}
{
if($1 in name){print $2 " duplicates " name[$1]}
}' $HOME/dir*

因此,$HOME/dir* 部分将这两个文件传递到 awk 中。 FNR==NR 之后的 {} 部分仅适用于读入的第一个文件,并且在读取时,我们保存一个关联数组,该数组由包含文件名。然后,在第二遍中,我们检查每个散列是否已被看到,如果有,我们说它是重复的,并输出我们在第一遍中从散列中找到的名称 name[] 以及我们在第二遍中从 $2 中找到的名称。

这不适用于包含空格的文件名,因此如果这是一个问题,请更改 identify 命令以在哈希值和文件名之间添加冒号,如下所示:

identify -format "%#:%f\n" *.png

并将 awk 更改为 awk -F":",它应该会再次工作。

关于image - 比较图像并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30059425/

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