完全に白い画像を見つける方法は?

完全に白い画像を見つける方法は?

サイトで私が確認した多くの画像は完全に空です。つまり、500x500で、すべてのピクセルが白です。すべてのイメージは、イメージディレクトリのサブディレクトリにあります。何が白であるかを確認する方法は?これらのイメージの名前を調べるか考えています。

修正する:

  • bashスクリプトやコマンドを使いたいです。
  • Imagemagickがインストールされました。
  • サーバーはUbuntu 14.04です
  • すべての画像に.jpg拡張子があります。

答え1

ImageMagickパッケージがある場合、またはインストールできる場合は、identifyファイルのカラーヒストグラムを印刷するユーティリティがあります。以下のawkプログラムは、identify -verbose出力をスキャンしてヒストグラムにリストされている色と色の数を取得します。 1つの色だけが表示され、ヒストグラムの唯一の色が白の場合は「成功」を返し、それ以外の場合は「失敗」を返します。

その後、awkの周囲にシェルスクリプトをラップして識別し、一致するファイルにフラグを立てることができます。

for f in images/*
do
  identify -verbose "$f" | awk -f iswhite.awk && echo "$f is an all-white image"
done

iswhite.awk:

/Histogram:/ {
  inhisto=1
}
inhisto && /[[:digit:]]+: \([ [:digit:]]{3},[ [:digit:]]{3},[ [:digit:]]{3}\) #/ {
  if ($0 !~ /#FFFFFF white/) { nonwhite=1 }
}
/Rendering intent/ {
  inhisto=0
}
/Colors: / {
  ncolors=$2
}
END {
  if (ncolors == 1 && nonwhite == 0) { exit 0 } else { exit 1 }
}

答え2

使用イメージのなりすましを探す:

# Look for and compare images that are 90% similar 
# in all subdirectories of the current directory.
findimagedupes -R -- .

この-tオプションは画像の類似性を制御します。

# Same as before but for images that are 99% similar.
findimagedupes -t 99 -R -- .

ディレクトリに次のファイルがあるとします。

white.png foo.png. bar.png. baz.jpg green.png

...どこ白.png誰もが知っているように、彼は白人です。緑.pngとみなされるグリーン、もう一つは不確実です。findimagedupes同様のファイルはすべて同じ行(スペースで区切られている)に出力されるため、白いファイルのみが表示されます。

findimagedupes -t 100 -R -- . | grep -w white.png

出力(家庭バー.png白です):

white.png bar.png

また見なさい:両方の画像がグラフィック的に同じであることを確認するコマンドラインツール、より一般的に:Linux用のスマート冗長ファイルの検索

関連情報