Páginas

domingo, 15 de noviembre de 2015

Buscar una imagen dentro de otra y obtener su posición (coordenadas x,y)


Buscar una imagen dentro de otra y obtener su posición (coordenadas x,y)


Muchas veces necesitamos  desarrollar un programa que reconozca donde esta en una imagen un icono o una subimagen (una porción de la imagen principal). Vamos a usar los png2pat y visgrep, para realizar esta tarea.

Tenemos la siguiente imagen de fondo:

Y queremos buscar  la subimagen donde está el  icono de la nube:


Los archivos de imagen (tanto el fondo como la imagen que buscamos) deben de tener la extensión ".png", si es otra hay que convertirla con algún programa (gimp, convert, etc).

Estos serian los pasos:
1) Convertimos la imagen "nube.png" al el formato "pat" usando el comando png2pat y ">"
$png2pat nube.png > /tmp/nube.pat

2) Y ahora la buscamos en el fondo:
$visgrep fondo.png /tmp/nube.pat

3) Nos mostrará las coordenadas de donde esta la imagen "nube.pat"
$visgrep fondo.png /tmp/nube.pat
365,98 -1

La x=365, y la Y=98, así tendremos localizado el punto donde esta la subimagen (su esquina superior  izquierda) dentro del fondo

Os dejo en enlace de la ayuda de los comandos  que están en el paquete xautomation
png2pat
visgrep
Tenéis que tener instalado xautomation para tener los dos comandos disponibles:

En un próximo artículos haré un programa donde se usen estos comandos.


Saludos