Aplicar una máscara binaria en una imagen en Python

Si trabajas en Visión Artificial, muchas veces es necesario aplicar una segmentación en una imagen mediante una máscara binaria.

En un principio sólo necesitas las librerías de Numpy y Matplotlib de Python.

Aquí os dejo un script de ejemplo donde uso Scipy para cargar una máscara desde GNU Octave/MATLAB:

import numpy as np
import scipy.io as sio # Permite cargar un fichero de GNU Octave/MATLAB
from matplotlib import pyplot as plt

image = plt.imread('entrada.png')
bin_mask = sio.loadmat('mask.mat')['bin_mask'].astype('bool')

mask = np.dstack((bin_mask, bin_mask, bin_mask))

image[~mask] = 0
plt.imsave('salida.png', image)

Creo que ésta es la manera más elegante de hacerlo. Si alguien conoce alguna alternativa más reducida o con menos módulos cargados estaré encantado de que la comparta.

Extraer o descomprimir una imagen ISO desde la terminal

Cuando trabajamos en un ordenador con GNU/Linux que no tenga interfaz gráfica y necesitamos extraer o descomprimir una imagen ISO desde la terminal, lo mejor es recurrir a la aplicación 7-Zip.

Primero comprueba que tienes instalado 7-Zip (por ejemplo en Debian o Ubuntu) y todas sus utilidades:

sudo apt-get install p7zip p7zip-full

Por último, descomprime la imagen ISO desde la terminal:

7z x nombre_de_la_imagen.iso

Si el archivo no es muy grande, en pocos minutos tendrás extraído la imagen ISO en tu disco duro.

imagemagick

PHP Fatal error: Class ‘Imagick’ not found

imagemagickSi manejáis PHP y sois usuarios de Linux sabréis que una de las mejores librerías que existen para manejar imágenes, con operaciones a todos los niveles, es imagemagick.

En caso de que la estéis usando y obtengáis un error 500 del servidor, si activáis los errores, es posible que tengáis algo así:

PHP Fatal error:  Class 'Imagick' not found 

El error se debe a que no tenéis instalada la librería correctamente, la solución es simple:

apt-get install imagemagick php5-imagick

Tras esto reiniciáis el servicio y listo:

sudo service apache2 restart

Crear un Screencast en un Gif

Crear un Screencast en un Gif

 

Quieres Hacer tu video en un GIF Animado? Quieres realizar tus Tutoriales en un GIF en lugar de un Video? Byzanz es una simple herramienta para hacerlo, Graba tus Acciones en Pantalla y guardalo como una Imagen GIF, es Gratuita, desde la Consola y Facil de Utilizar.

¿Cómo Instalarlo?

Para Instalar Byzanz simplemente teclea lo siguiente en una terminal (Ctrl + ALT + T)

Agregamos repositorio Byzanz

sudo add-apt-repository ppa:fossfreedom/byzanz

Actualizamos paquetes

sudo apt-get update

Instalamos byzanz

sudo apt-get install byzanz

¿Cómo Utilizarlo?

Byzanz tiene varias opciones:

  • -a Graba Audio (solo si el formato de salida lo soporta)
  • -c Graba Cursor
  • -d duracion
  • --delay tiempo de espera antes de comenzar
  • --display Pantalla a utilizar
  • -h Altura de Rectangulo a grabar
  • -w Anchura de Rectangulo a grabar
  • -x Coordenada x donde comienza el rectangulo
  • -y Coordenada y donde comienza el rectangulo
  • -v modo verbose

 

Un Ejemplo facil para comenzar a grabar sera:

byzanz-record -c -d 15 -w 800 -h 600 -x 0 -y 0 test.gif

 

Lo cual grabara 15 segundos un rectangulo de 800 x 600 desde la esquina superior izquierda y lo guardara en tu misma ruta donde lanzaste el comando con el nombre de test.gif

Resultado

Crear un Screencast en un Gif
Dudas o Comentarios?

Invertir una imagen – Curso Octave

octavecomplement

 

NOTA: este tutorial es parte del curso de Octave de Linux Hispano.

Una de las funciones más interesantes para el tratamiento de imágenes es invertir o complementar una imagen. Las ventajas son la facilidad para detectar características que con la imagen original es más complicado de descubrir.

Recordad que para el tratamiento de imágenes en Octave tenéis que instalar el paquete de imagen.

Invertir una imagen, o complementarla, es muy sencillo con este ejemplo:

imagen_original = imread('imagen.png');
imagen_invertida = imcomplement(imagen_original);
imshow(imagen_invertida);

Convertir una imagen de color a una en blanco y negro – Curso Octave

curso-octave

NOTA: este tutorial es parte del curso de Octave de Linux Hispano.

Una de las funciones más interesantes para el tratamiento de imágenes es trabajar con imágenes en blanco y negro. Las ventajas son la facilidad para detectar características, estudiar la imagen y, en general, procesar más rápido la imagen que con tres canales de color (RGB).

Recordad que para el tratamiento de imágenes en Octave tenéis que instalar el paquete de imagen.

Convertir el color de una imagen a blanco es muy sencillo con este ejemplo:

imagen_color = imread('imagen.png');
imagen_blanco_negro = rgb2gray(imagen_color);
imshow(imagen_blanco_negro);

Y ésta es la imagen, denominada imagen.png, que se ha usado:

imagen

Instalar paquete de imagen – Curso Octave

NOTA: este tutorial es parte del curso de Octave de Linux Hispano.

El paquete de imagen de Octave te proporciona funciones para procesar imágenes. El paquete también proporciona funciones para la extracción de características de imágenes, estadísticas, transformaciones espaciales y geométricas, operaciones morfológicas, filtrado lineal, y mucho más.

Si quieres puedes ver la documentación oficial del paquete de imagen.

Una vez que sepas instalar Octave en Ubuntu Linux, puedes instalar el paquete de imagen de Octave mediante repositorio. Para ello abre tu terminal y ejecuta:

sudo apt-get install octave-image

EJEMPLO

Ésta es la imagen de ejemplo que vamos a utilizar:

imagen

Y éste es el código, por ejemplo ejemploimagen.m, de prueba:

imagen = imread('imagen.png');
bordes = edge(imagen, 'Sobel');
imwrite(bordes, 'final.png');
imshow(bordes);

Y éste es el resultado:

final

Grilla de imágenes

Alinear imágenes correctamente en una grilla sin usar tablas con HTML y CSS

Es bien posible que en más de una ocasión hayáis tenido que colocar imágenes una detrás de otra formando filas y columnas. Algo como lo que muestro a continuación:

Grilla de imágenes

¿Cuál es el problema? Si lo hacéis a mano directamente con HTML y CSS sin usar una galería o un framework que te la cree correctamente, os habréis peleado para dejarlas perfectamente alineadas.

Personalmente he probado de todo, desde obligar a alturas, márgenes, padding, float, etc. a incluir más div y nada, hasta que leí esta pregunta del genial Stackoverflow.

¿Qué estructura tenemos que seguir para llegar a esta solución?

El siguiente HTML:

<div class="wrapper"> 
  <div> 
    <img><img><img><img><img><img> 
  </div> 
</div>

Y el siguiente CSS (traduzco los comentarios):

.wrapper {
    overflow:hidden;
    width:320px;
}
.wrapper div {
    /* cualquier altura mayor que el total de sumar la anchura de las img */
    width:330px;

    /* para evitar el margen superior de la primera fila */
    margin-top:-10px;
}
img {
    width:100px;
    height:75px;
    float:left;
    margin:10px 10px 0 0;
}

Cargar y mostrar una imagen en OpenCV

En Visión Artificial, una de las librerías más importantes es OpenCV. Desde hace unos días estoy publicando pequeños tutoriales para esta gran librería.

Aquí tenéis un programa para cargar y mostrar una imagen en OpenCV:

#include 
#include 
#include 

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
  if( argc != 2) {
    cout <<" Usage: mostrar_imagen " << endl;
    return -1;
  }

  Mat image;
  image = imread(argv[1], CV_LOAD_IMAGE_COLOR);

  if(! image.data ) {
    cout <<  "Could not open or find the image" << std::endl ;
    return -1;
}

  namedWindow( "Display window", CV_WINDOW_AUTOSIZE );
  imshow( "Display window", image );

  waitKey(0);
  return 0;
}

Enlace: Cómo instalar OpenCV en Ubuntu.
Enlace: Primer programa en OpenCV.

Comprimir imágenes PNG con OptiPNG

Sea cual sea vuestra motivación o necesidad, es muy posible que os hayáis encontrado con este caso: comprimir y optimizar imágenes en formato PNG de una manera rápida y sencilla.

La aplicación que os propongo para llevar a cabo esta tarea es OptiPNG. Para instalarla desde Debian y derivados (Ubuntu) bastará con abrir un terminal:

ahornero@6581-D:~$ apt-get install optipng

Bien, bastará con eso para instalarlo. Para usarlo, lo primero hago un backup de mi imagen antes de procesarla, de esta forma conservaré el original

ahornero@6581-D:~$ cp prueba.{png,bak.png}

Y ahora sí, lanzo OptiPNG:

ahornero@6581-D:~$ optipng prueba.png

Comprobad el tamaño y calidad de la imagen, veréis como por un lado ocupa menos y no tendremos pérdida alguna en la calidad.

¿Y si quiero aplicarlo a varios archivos? Fácil también: 

#!/bin/bash
mkdir optimizado
## almacenamos las imágenes optimizadas y comprimidas en el directorio 'optimizado' y ##
## creamos el directorio optipng_salida.log como log de las correspondientes llamadas ##
for i in *.png; do optipng -quiet -keep -preserve
-dir optimizado -log optipng_salida.log "$i"; done

Crear una imagen ISO desde un CD o un DVD en Ubuntu

La posibilidad de usar imágenes de CD o DVD directamente sin tener que quemarlas es una gran opción en mucho casos: ahorramos el disco, preservamos de paso el medio ambiente y tenemos un fichero que podemos mover cómo queramos.

Si tenemos un CD o DVD y queremos convertirlo en imagen por cualquier motivo, en cualquier distribución de Linux, el procedimiento será casi inmediato. Todos lo que comento aquí se hace desde la terminal.

Crear imagen para un DVD

Directamente hacemos:

dd if=/dev/dvd of=/home/usuario/Escritorio/dvd.iso

Crear imagen para un CD

dd if=/dev/cdrom of=/home/usuario/Escritorio/cd.iso

Crear imagen para una carpeta

Si tenemos los datos en una carpeta:

mkisofs -o /destino/cd.iso /carpeta_para_imagen

Recordad que if en dd es el flujo de entrada, que en este caso será /dev/cd o /dev/dvd, pero que en función a la distribución y al equipo podría cambiar a algo así como /dev/cdrom por ejemplo (con un ls en /dev o usando el tabulador, encontraréis eso fácil).

Podéis cambiar la carpeta de destino a la que más os guste sobre la que tengáis permisos de escritura.

Cómo obtener la anchura y la altura de las imágenes destacada de una entrada en WordPress

Cuando estamos diseñando un tema en WordPress probablemente tengamos que tratar con imágenes destacadas en las entradas, las llamadas Post Thumbnails. Las imágenes como tal tienen una serie de características, pero desde el punto de vista del diseño las que nos importa más son sus dimensiones: ancho y alto. ¿Cómo saberlas? Aquí os lo cuento.

Dentro del loop usaremos este extracto de código:

$imgdata = wp_get_attachment_image_src
  (get_post_thumbnail_id(), 'thumbnail');
$imgurl = $imgdata[0]; // UTL
$imgwidth = $imgdata[1]; // anchura
$imgheight = $imgdata[2]; // altura

Con estos datos ya jugaremos a nuestro gusto. Si en lugar de usar "thumbnail" en wp get attachment image src usamos ‘medium’, ‘large’ o ‘full’ como parámetros, obtendremos las imágenes generadas como miniaturas de diferentes parámetros (recordad que podéis ajustar las dimensiones de esas miniaturas en Ajustes -> Multimedia).

Instalar soporte PHP-GD en un servidor Apache

Siguiendo un poco el hilo de mis últimas entradas dónde se propone eliminar PostgreSQL del arranque o explicamos cómo configurar la interfaz de red por consola, entre otras configuraciones sobre un servidor, vamos a ver cómo instalar soporte PHP-GD en un servidor Apache.

Para ello, abrimos un terminal. Nos logueamos como superusuario, o a través del comando sudo, lanzamos las siguientes instrucciones:

root@6581-Server:~# apt-get install php5-gd

Se instalará junto con las dependencias:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libgd2-xpm
Suggested packages:
libgd-tools
The following packages will be REMOVED:
libgd2-noxpm
The following NEW packages will be installed:
libgd2-xpm php5-gd
0 upgraded, 2 newly installed, [...]

Automáticamente debería de haberse reiniciado el servidor para que los cambios surtan efecto, pero si no ha sido así, simplemente invocamos:

root@6581-Server:~# /etc/init.d/apache2 restart

Y finalmente. ¿Cómo comprobar que nuestra instalación de PHP ya soporta PHP-GD?

php5 -i | grep -i --color gd

Obteniendo cómo salida:

Additional .ini files parsed => /etc/php5/cli/conf.d/gd.ini,
gd
GD Support => enabled
GD Version => 2.0
gd.jpeg_ignore_warning => 0 => 0
XAUTHORITY => /var/run/gdm3/auth-for-vivek-ruJHl1/database
_SERVER["XAUTHORITY"] => /var/run/gdm3/auth-for-vivek-ruJHl1/database

¿Y si queremos comprobar el funcionamiento de esta extensión sobre Apache? Bien, también es fácil. Nos creamos un fichero test.php en dónde invocaremos la función phpinfo(); como se muestra abajo.

<?php
  phpinfo();
?>

Lo llamamos desde, por ejemplo, la siguiente ruta: http://localhost/test.php Así podremos comprobar si se encuentra activado.

Aplicaciones livianas para Linux – Visores de imágenes

A continuación nuestra propuesta de visores de imágenes livianos para Linux. Se aceptan sugerencias, siempre que usen pocos recursos:

  • Feh usa la librería imlib2.
  • GPicView hecho por los desarrolladores de LXDE.
  • GQview nos permite movernos y visualizar las imágenes a través de un árbol de directorios.
  • Geeqie  es un fork de GQview con funcionalidad añadida. Soporta varios formatos RAW.
  • Mirage hecho en GTK+. Este es el que uso, me encanta.
  • Ristretto muy parecido al anterior. Para entornor Xfce, aunque complatible con Gnome.
  • QIV (acrónimo de Quick Image Viewer) visor de imágenes gdk/Imlib.
  • Viewnior minimalista y rápido. En GTK2.

¿Propones alguno?

Extracto traducido de: HarbHag

Montar imágenes que no son ISO: NRG, BIN/CUE, MDF/MDS, IMG, DAA en Linux

Si hablamos la semana pasada de cómo montar una imagen ISO de forma gráfica y desde la consola, hoy vamos a hablar de cómo montar las demás imágenes en Linux. Aunque no sean las estándares, son muy frecuentes y muy comunes o si no preguntadle a todos los que usen Nero, Alcohol 120% o cualquier software de grabación similar propietario.

Imágenes NRG de Nero

Las imágenes NRG pueden montarse sin problemas directamente desde la terminal haciendo:

$ sudo mkdir /mnt/punto/de/montaje
$ mount -t iso9660 -o loop,offset=307200 imagen.nrg /mnt/punto/de/montaje

El resto de formatos no puede montarse directamente, por lo que siempre haremos el siguiente proceso:

  1. Convertir la imagen a estándar ISO
  2. Montar la imagen en ISO: en modo texto o mediante interfaz gráfico

Veamos uno a uno los conversores de los que disponemos.

Imágenes BIN/CUE

Usaremos bchunk (bin chunker). Para instalarlo:

$ sudo apt-get install bchunk

Una vez instalado:

bchunk imagen.bin adjunto.cue nueva_imagen.iso

Imágenes MDF/MDS de Alcohol 120%

En este caso usamos IAT (Iso9660 Analyzer Tool). Repetimos los mismos pasos:

$ sudo apt-get install iat

Una vez instalado:

iat imagen.mdf nueva_imagen.iso

Imágenes IMG

Instalamos en este caso ccd2iso (CloneCD a ISO):

$ sudo apt-get install ccd2iso

Una vez instalado:

ccd2iso imagen.img nueva_imagen.iso

Imágenes DAA

En este caso, usaremos un programa que no está disponible en los repositorios, así que primero lo descargaremos (mirad en "Power ISO for Linux"), descomprimimos, copiamos a /usr/local/bin y ya podemos ejecutar.

$ tar zxf poweriso-version.tar.gz
$ sudo cp poweriso /usr/local/bin
ahora convertimos a ISO

Y ya podemos proceder con la conversión:

$ poweriso convert imagen.daa -o imagen.iso