Saltar a contenido

Visión por Computadora

Utilizando los métodos a continuación, podrás utilizar la visión por computadora para interactuar con los elementos que aparecen en la pantalla.

Agregar Imagen

Por defecto, las imágenes de los elementos se obtienen de la carpeta resources del proyecto y se agregan al mapa de imágenes. Sin embargo, es posible agregar una imagen que se encuentre en otro directorio en el mapa de imágenes y acceder a ella normalmente a través de la etiqueta definida.

Note

Esta operación no es necesaria para las imágenes que ya se encuentran en la carpeta predeterminada resources del proyecto.

# Agregar una imagen al mapa de imágenes que se encuentra en un directorio específico.
bot.add_image("elemento", "/mi_directorio/imagenes/elemento.png")
// Agregar una imagen al mapa de imágenes que se encuentra en un directorio específico.
addImage("elemento", "/mi_directorio/imagenes/elemento.png");
// Agregar una imagen al mapa de imágenes que se encuentra en un directorio específico.
desktopBot.addImage('elemento', '/mi_directorio/imagenes/elemento.png')
// Agregar una imagen al mapa de imágenes que se encuentra en un directorio específico.
desktopBot.addImage('elemento', '/mi_directorio/imagenes/elemento.png')

Obtener Imagen del Mapa

Puedes obtener una imagen específica del mapa de imágenes utilizando una etiqueta definida.

# Obtener la imagen que tiene la etiqueta "elemento".
img = bot.get_image_from_map("elemento")
// No implementado aún.
// Obtener la imagen que tiene la etiqueta "elemento".
const img = desktopBot.getImageFromMap('elemento')
// Obtener la imagen que tiene la etiqueta "elemento".
const img: Jimp = desktopBot.getImageFromMap('elemento')

Encontrar Elementos

Utilizando los métodos de búsqueda, es posible buscar un elemento en la pantalla utilizando la visión por computadora hasta que ocurra un tiempo de espera. Puedes utilizar el resultado del método de búsqueda para verificar si se encontró un elemento o no y, en base a eso, realizar el tratamiento necesario.

# Print if the first_element was NOT found on the screen.
if not bot.find(label="first_element", matching=0.97, waiting_time=10000):
    print("This element was not found.")

# Print if the "second element" was found on the screen.
if bot.find(label="second_element", matching=0.97, waiting_time=10000):
    print("This element was found!")

# Using find_until will have the same effect as using find.
if bot.find_until(label="another_element", matching=0.97, waiting_time=10000):
    print("Found!")
// Print if the first_element was NOT found on the screen.
if(!find("first_element", 0.97, 10000)) {
    System.out.println("This element was not found");
}

// Print if the second_element was found on the screen.
if(find("second_element", 0.97, 10000)) {
    System.out.println("This element was found!");
}
// Print if the first_element was NOT found on the screen.
if (await desktopBot.find('first_element') === null) 
    console.log('This element not found')

// Print if the second_element was found on the screen.
if (await desktopBot.find('second_element') !== null) 
    print("This element was found!")
// Print if the first_element was NOT found on the screen.
if (await desktopBot.find('first_element') === null) 
    console.log('This element not found!')

// Print if the second_element was found on the screen.
if (await desktopBot.find('second_element') !== null) 
    print("This element was found!")

El método find anterior es el más común de usar y básicamente funcionará para todos los casos en los que necesitemos buscar un elemento en la pantalla. Sin embargo, es posible utilizar métodos de búsqueda para situaciones específicas.

Encontrar Texto

# Buscar un elemento que contenga solo texto.
if bot.find_text(label="txt_elemento", matching=0.97, waiting_time=10000):
    print("¡Este texto se encontró en la pantalla!")
// Searching for an element that contains only text.
if(findText("txt_element", 10000)){
    System.out.println("This text was found on screen!");
}
// Buscar un elemento que contenga solo texto.
if (await desktopBot.findText('segundo_elemento') !== null)
    console.log('¡Este texto se encontró en la pantalla!')
// Buscar un elemento que contenga solo texto.
if (await desktopBot.findText('segundo_elemento') !== null)
    console.log('¡Este texto se encontró en la pantalla!')

Encontrar Todos

Además de realizar operaciones con elementos individuales, también es posible buscar varios elementos diferentes o todas las ocurrencias del mismo elemento.

# Search for all occurrences of the element.
elements = bot.find_all(label="test_element", matching=0.97, waiting_time=10000)

# For each element found, print the coordinates.
for ele in elements:
    print(ele)
// Search for all occurrences of the element.
List<UIElement> elements = findAllUntil("test_element", 0.97, 20000);

// For each element found, print the coordinates.
for(UIElement ele : elements) {
    System.out.println(ele.getX());
    System.out.println(ele.getY());
    System.out.println(ele.getWidth());
    System.out.println(ele.getHeight());
}
// No implementado aún.
// No implementado aún.

Encontrar Múltiples

# List with the element's label.
elements_to_find = ["ele1", "ele2", "ele3", "ele4"]

# Searching for all elements will return a dictionary with the label and coordinates of each one.
elements = bot.find_multiple(labels=elements_to_find, matching=0.97, waiting_time=20000)

print(elements)
// No implementado aún.
// List with the element's label.
const elements_to_find = ["ele1", "ele2", "ele3", "ele4"]

// Searching for all elements will return a dictionary with the label and coordinates of each one.
const elements = await desktopBot.find_multiple(elements_to_find)

console.log(elements)
// List with the elements label.
const elements_to_find: string[] = ["ele1", "ele2", "ele3", "ele4"]

// Searching for all elements will return a dictionary with the label and coordinates of each one.
const elements: Element[] | null[] = await desktopBot.find_multiple(elements_to_find)

console.log(elements)

Obtener Elementos

Puedes obtener información sobre el último elemento encontrado y también las coordenadas de un elemento específico.

Obtener Último Elemento

# Get the last element found on the screen.
last_element = bot.get_last_element()

# Printing the element coords.
print(last_element)
// Get the last element found on the screen.
UIElement lastElement = getLastElement();

// Printing the element coords
System.out.println(lastElement.getX());
System.out.println(lastElement.getY());
System.out.println(lastElement.getWidth());
System.out.println(lastElement.getHeight());
// Obtener el último elemento encontrado en la pantalla.
const lastElement = desktopBot.getLastElement()
// Obtener el último elemento encontrado en la pantalla.
const lastElement: Element = desktopBot.getLastElement()

Obtener Coordenadas del Elemento

# This method will search for the element and return its X and Y.
ele = bot.get_element_coords(label="test_element", matching=0.97)
print(ele)

# This method will search for the element and return its X and Y centered.
element_centered = bot.get_element_coords_centered(label="test_element", matching=0.97)
print(element_centered)
// Este método buscará el elemento y devolverá sus coordenadas X e Y.
Point ele = getCoordinates("<ruta_a_elemento.png>", 10000, false);
System.out.println(ele);
// Este método buscará el elemento y devolverá sus coordenadas X e Y.
const elementCoords = await desktopBot.getElementCoords('elemento_prueba')
// Este método buscará el elemento y devolverá sus coordenadas X e Y.
const elementCoords: object = await desktopBot.getElementCoords('elemento_prueba')