Obtendo a cor predominante em uma imagem?

3

É possível obter a cor predominante em uma imagem a partir da linha de comando? Idealmente eu gostaria de voltar como hex ou RGB.

Achei que seria possível fazer isso com comando de identificação do imagemagick , mas não consegui ver opção para fazer isso na documentação.

    
por Richard 02.04.2013 / 18:51

2 respostas

10

identify -verbose do Imagemagick fornece uma tabela de histogramas de paleta, mas somente se o número de cores exclusivas estiver abaixo de um limite (1024 nas versões que eu verifiquei, v6.x até v6.8.3 ).

Em vez disso, você pode apenas " convert " da sua imagem para um histograma , essa saída não é limitada pelo número de cores exclusivas:

convert image.jpg  -format %c -depth 8  histogram:info:histogram_image.txt
sort -n histogram_image.txt | tail -1

Classificar a saída numericamente pela primeira coluna classifica por frequência de cores de pixel. (Frequência de pixels coloridos específicos pode não corresponder a uma percepção humana de cor predominante, é claro).

Se você estiver reduzindo as cores, provavelmente poderá confiar apenas em convert para fazer isso por você pelo seu escolha de pontilhamento e / ou posterização . Mesmo especificamente para o web-safe 216:

convert image.png  +dither -remap netscape:  image_websafe.png

Você provavelmente se aproximaria de uma cor predominante percebida por alguma combinação de desfoque, redimensionamento e posterização; esse não é um problema simples de definir e resolver:

Veja também o seguinte link para dcolors , um script que usa o Imagemagick para determinar um conjunto de cores em uma imagem, usa incluir coordenar o esquema de cores da área de trabalho com a imagem da área de trabalho escolhida:   link

    
por 02.04.2013 / 20:33
6

Encontrei esta resposta elegante e curta aqui link

$ convert Waffle.jpg -scale 1x1\! -format '%[pixel:u]' info:-
rgb(219,166,94)
    
por 21.06.2014 / 21:53