Tengo un script que descarga a intervalos la última imagen satélite a gran resolución de la página de la NASA y la coloca en el escritorio. De forma esporádica el servidor web devuelve una imagen en negro ó con un área de la península en negro, no hay datos del satélite, imagino. Obviamente como imagen no valen nada, pero ¿como detectar automáticamente que una imagen es negra en uno 50%,80% o 90% y así poder desecharla?
Con Imagemagick hay un truquillo
if [ $(convert imagen.jpg -resize 64x64\! txt:- | grep black | wc -l) -gt 2048 ]; then echo "La mitad de la imagen es negra"; fi
Es decir: reescalamos la imagen a 64×64 (4096 píxels) y convirtiendolo a texto (txt:- ) contamos aquellos que son negros (blanco, amarillo, ponga usted el RGB que quiera), si son más de 2048 (50%) más de la mitad son negros y la imagen se desecha, fácil ¿no?