如何按主色或背景色对图像进行排序

How to sort images by a dominant color, or the background color

我有 8000 张图片,基本上需要删除任何具有白色背景的照片。我希望找到一种方法,可以按主色(希望是白色)或背景色(比如左上角像素)对所有这些图像进行排序。

用imagemagick可以实现吗?

根据我进行 1 分钟网络研究(实际上是您的工作)的发现,这是可能的。

减少加速的颜色数量(如果需要) http://www.imagemagick.org/Usage/quantize/#colors

然后创建直方图以获得颜色频率 http://www.imagemagick.org/Usage/files/#histogram

http://www.imagemagick.org/Usage/quantize/#extract

然后按最主要颜色的频率对输出进行排序

可在此处找到更多信息: https://superuser.com/questions/576949/getting-the-predominant-colour-in-an-image

您可以计算平均像素值、排序并传输到其他实用程序。

for f in *.jpg
do
  identify -format '%[mean] %f\n' "$f"
done | sort -r | cut -d ' ' -f 2
  • identify -format '%[mean] %f\n' "$f" 将计算平均像素值(数字随着接近白色而增加)。例如...

    14524.3 output0.jpg
    64246.8 output1.jpg
    34612.2 output2.jpg
    
  • 管道到 sort -r 以反向排序。

    64246.8 output1.jpg
    34612.2 output2.jpg
    14524.3 output0.jpg
    
  • 并通过管道传输到 cut -d ' ' -f 2 以降低计算的平均值。

    output1.jpg
    output2.jpg
    output0.jpg
    

您可以使用 ImageMagick 计算图像中白色像素的百分比吗?

convert image -fuzz XX% -fill white -opaque white -fill black +opaque white -scale 1x1 -format "%[fx:100*mean]\n" info:


结果将是图像中白色的百分比。

其中 XX% 是您想要将白色视为白色的接近程度的百分比容差。如果您只想要纯白色,则使用 0%。如果要包括近白,则增加 XX%。

PS 抱歉@emcconville,我们一定是在同一时间发布的。大致相同的解决方案,但您的解决方案在排序方面更彻底。