Exclua imagens duplicadas. Precisa de um software para calcular a cor média de uma imagem

3

Eu quero excluir duplicatas em um monte de imagens. Bem como eu tenho dups da mesma imagem em uma resolução diferente, vou fazer a exclusão eu mesmo. Mas eu quero fazer isso em tempo linear. Então eu pensei que seria inteligente classificar as imagens via renomeando as imagens com um prefixo de cor comum com um pequeno script. O problema é que não conheço nenhum software capaz de calcular a cor média na CLI. Existe algum?

    
por ManuelSchneid3r 10.02.2013 / 15:15

2 respostas

6

Por fim, brinquei um pouco e encontrei o pacote de software ImageMagick. É ótimo porque me permite fazer isso em um one-liner no console sem a necessidade de um script.

for i in ./*; do mv "$i" "$(convert "$i" -scale 1x1\! -format '%[pixel:s]' info:- | cut -db -f2-)${i#./}" ;done

Ele não faz nada além de percorrer a pasta (pré-condição: ela contém apenas imagens!), obter a cor média via convert "$i" -scale 1x1\! -format '%[pixel:s]' info:- extrair a parte relevante da saída cut -db -f2- e finalmente renomear o arquivo. Horrivelmente quão bem funcionou.

Cumprimenta

    
por 10.02.2013 / 16:28
4

Se eu entendi sua pergunta corretamente, você pode fazer algo como:

wget -qO- 'https://www.gravatar.com/avatar/22e8a29fced165b37995aa5e05e6449b?s=32&d=identicon&r=PG' |
 anytopnm |
 tail -n +4 |
 perl -ne 'BEGIN{$/=}
   ($r,$g,$b)=unpack"C3";$ar+=$r;$ag+=$g;$ab+=$b
   END{printf "#%02x%02x%02x\n", $ar/$.,$ag/$.,$ab/$.}'

O que para o seu avatar () fornece: #c350c2 (some light magenta no momento da escrita).

Isso pressupõe que anytopnm sempre retorne um formato PNM in P6 . Pode haver casos em que isso não acontece, como quando a imagem está em tons de cinza e, nesse caso, convert - ppm:- do ImageMagick pode ser mais seguro.

    
por 10.02.2013 / 15:44