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.
Obtener Imagen del Mapa¶
Puedes obtener una imagen específica del mapa de imágenes utilizando una etiqueta definida.
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!")
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¶
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.
List<State> elements = findAll("test_element", 0.97, 20000);
// For each element found, print the coordinates.
for(State ele : elements) {
System.out.println(ele.getX());
System.out.println(ele.getY());
System.out.println(ele.getWidth());
System.out.println(ele.getHeight());
}
Encontrar Múltiples¶
// List with the elements label.
List<String> elementsToFind = new ArrayList<String>();
elementsToFind.add("ele1");
elementsToFind.add("ele2");
elementsToFind.add("ele3");
elementsToFind.add("ele4");
// Searching for all elements will return a Map with the label and coordinates of each one.
Map<String, State> elements = findMultiple(elementsToFind, 0.97, 10000);
// Printing the coordinates of the element "ele2".
System.out.println(elements.get("ele2"));
Establecer Elemento Actual¶
Puedes establecer el elemento actual para realizar operaciones en él. Esto puede ser útil cuando buscamos múltiples elementos pero queremos trabajar con uno específico.
Obtener Elementos¶
Puedes obtener información sobre el último elemento encontrado y también las coordenadas de un elemento específico.
Obtener Último Elemento¶
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)
// This method will search for the element and return its X and Y.
Point ele = getElementCoords("test_element", 0.97);
System.out.println(ele);
// This method will search for the element and return its X and Y centered.
Point elementCentered = getElementCoordsCentered("test_element", 0.97);
System.out.println(elementCentered);