PDA

Ver la Versión Completa : Buscar posición de una imagen en pantalla


ZayDun
25-06-2013, 20:58:15
Hola.

Tengo una imagen guardada que se llama "pixeles.bmp" dicha imagen es de un tamaño pequeño ya que solo contiene varios pixeles, me gustaría que automáticamente me buscara en toda la pantalla la imagen que hace referencia a "pixeles.bmp" y saber su posición. Llevo varios días buscando y encontré una función que requiere de un archivo dll, en concreto "ImageSearchDLL.dll" en principio es justo lo que estoy buscando pero el resultado que me muestra siempre es "0:0"

function ImageSearch(afindImage: string; atolerance: Integer; aresultPosition:integer; var ax, ay: Integer): Boolean;
stdcall; external 'ImageSearchDLL.dll';


procedure TForm1.Button1Click(Sender: TObject);
var
ax, ay:integer;
begin
ImageSearch('pixeles.bmp', 50, 1, ax, ay);
Showmessage(InttoStr(ax) + ':' +InttoStr(ay));
end;


No me importa utilizar otro método, pero no se por donde empezar.

P.D Os adjunto la dll para el que me pueda ayudar.

Gracias!

ecfisa
25-06-2013, 21:27:01
...me gustaría que automáticamente me buscara en toda la pantalla la imagen que hace referencia a "pixeles.bmp" y saber su posición.
Hola ZayDun.

Una consulta: ¿ Con que componente estas mostrando la imágen en la pantalla ?

Saludos. :)

ZayDun
25-06-2013, 21:31:13
Hola ZayDun.

Una consulta: ¿ Con que componente estas mostrando la imágen en la pantalla ?

Saludos. :)

Hola ecfisa.

En un principio utilice un WebBrowser, pero después he estado utilizando un TImage para descartar que no fuese problema del otro componente.


Saludos.

ecfisa
25-06-2013, 21:35:50
Te consulté por que acabo de probar la función que adjuntaste con un TImage totalmente en blanco (sin haberle asignado una imágen) y me devuelve "0:0" sin ninguna advertencia.
Lo que me hace pensar que en el mejor de los casos devuelve ese valor aún cuando no exista y en el peor no no funcione correctamente.

Por otro lado, tratándose de un TImage no veo el modo que pueda obtener su posición en el form a partir del nombre de archivo de la imágen...

Saludos. :)

Neftali [Germán.Estévez]
26-06-2013, 10:44:25
No se de dónde has descargado este fichero, pero a mi me está avisando el antivirus (en mi caso Avast).
¿Tienes los fuentes?
¿Lo has compilado tú?

:(

ZayDun
26-06-2013, 20:21:08
No se de dónde has descargado este fichero, pero a mi me está avisando el antivirus (en mi caso Avast).
¿Tienes los fuentes?
¿Lo has compilado tú?

:(

El fichero lo he descargado ya copilado, en mi caso tengo nod32 y no me aparece ninguna amenaza de virus, puede que sea algún falso positivo, de todas formas seguiré buscando.

Gracias.

ecfisa
26-06-2013, 21:20:54
... de todas formas seguiré buscando.
Hola ZayDun.

El componente TImage no almacena la ruta al archivo. Cuando asignas una imágen al componente, Delphi incluye el mapa de bits dentro de los recursos del form.

De allí que insista que no veo forma que alguna aplicación o función, pueda extraer la ruta y el nombre de archivo a partir de un mapa de bits.

La solución es almacenar los nombres de las imágenes cuando se asignan al componente ya sea mediante TStrings, dynamic array,... y también te podría interesar revisar este modo (http://www.clubdelphi.com/foros/showthread.php?p=269890).

Saludos. :)

The_Duke
26-06-2013, 22:20:43
Te aconsejo que busque como comparar imágenes y puedas obtener el X y Y de las coincidencias
http://www.clubdelphi.com/foros/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABs0lEQVQ4jY2SP4viQBiHX0UQWz/AXb+VX8Iu/YqFhdhcd5BKEOTKC9jJFYrFgo3FIjYiCRauhTCQDMp4bJFklzCuLJLOWNj8rpDMJt7u7Q08xQzze953/hAR0el4QJLw8KR4fXkE/Wtch01zjP6gmxLsd9uPJafjAf1BF82WjmZLR61eRa1eVfNmS4cMxP8JksGk6FPB6XjAii1Qq1fBBYMMBL79+InvDIrbB0CzIpSmQ HF0RnF0vkiTFxZX7A+6MOzwU0FxdEZKYJpj1fp1eO5KzF0JzYreF/iekzr77QMUhh2q1zDsUIULPQl6fXkEFww53cWKLWCaY3DBVMuaFWHuSsT7fM/5W5DTXYUMBGQgUJoCpelFst9tcc84DDuE7znQrAiFnrwIkuGY/W6rBIYdQgYC7RmHZkXwPQf3jL8JiCglISLKVCaqzfhZfc9RcMFwc/eMfGd9EWQbS+R0F9nGEtnGEpnKBJnKJFWxPNygPNygPePggqE942nBdTjG9xyUhxvVcqEnsWILrNjiTfCRJN9ZI99Zp8LxWsy73z tTmYCI6ObuGV/7Tym+/PqtICL6A7F/dNYyWabFAAAAAElFTkSuQmCC