Este artículo proporciona una descripción general de las funciones disponibles para usar el sensor de visión de IA en Python, junto con instrucciones simples sobre cómo usarlas. Aprenderás los cuatro pasos en el proceso de usar el sensor de visión de IA, obtener datos, ver la cantidad de objetos obtenidos, seleccionar qué objeto de los datos usar y qué datos del objeto extraer.

Obtenga datos visuales con el sensor de visión AI

Para recopilar información de su entorno, el sensor de visión de IA toma una imagen de lo que está mirando actualmente. Cualquier objeto que identifique con la Firma Visual especificada se almacena internamente dentro del Sensor de Visión AI, que luego puede ser utilizado por otras funciones.

.takeSnapshot

Cualquier Firma Visual deberá configurarse antes de que pueda usarse como parámetro. Cuando utilice el método, especifique el parámetro de firma como el nombre del sensor, doble guion bajo, seguido del nombre de la firma visual.

utilidad exm.PNG

AIVision6.takeSnapshot(AIVision6__Azul)
AIVision6.takeSnapshot(AIVision6__Rojo)
AIVision6.takeSnapshot(AIVision6__Verde)

Ejemplo

En este ejemplo, el método .takeSnapshot se emplea para buscar cualquier objeto correspondiente a la Firma Visual "Azul". Luego, el código mostrará el recuento de objetos encontrados para esa Firma Visual.

int main() {
while (true) {
// Take a snapshot to check for detected objects
AIVision6.takeSnapshot (Blue);

// Clear the screen/reset so that we can display new information
Brain.Screen.clearScreen ();
Brain.Screen.setCursor (1, 1);

// Print how many objects were detected
Brain.Screen.print ("object count: %d", AIVision6.objectCount);

wait(0.5, seconds);
}
}

Determinar cuántos objetos se detectaron

Debido a que el método .takeSnapshot puede detectar varios objetos con la misma firma visual a la vez, puede averiguar cuántos objetos se han detectado con la propiedad .objectCount.

Brain.Screen.Print(“%d”, AIVision1.objectCount)

Ejemplo

En este ejemplo, la propiedad .objectCount se utiliza para comprobar si se detectó al menos 1 firma visual en la última instantánea, y luego se imprime true o false si se detectó un objeto. Si se detectó un objeto, imprime el recuento de cuántos objetos se detectaron en total.

int main() {
while (true) {
// Take a snapshot to check for detected objects
AIVision6.takeSnapshot (Blue);

// Clear the screen/reset so that we can display new information
Brain.Screen.clearScreen ();
Brain.Screen.setCursor (1, 1);

// if objects were found, print how many
if (AIVision6.objectCount > 0) {
Brain.Screen.newLine ();
Brain.Screen.print ("object count: %d", AIVision6.objectCount);
}

wait(0.5, seconds);
}
}

Seleccione de qué objeto obtener datos

Hay dos métodos para extraer datos del sensor de visión de IA. Un enfoque es recuperar directamente la información del objeto más grande detectado en el uso más reciente del método .takeSnapshot utilizando la propiedad AIVision.largestObject. El otro método utiliza la propiedadAIVision.objects [] y especifica un índice de objeto.

AIVision.largestObject

ai.vision.largest_object() es una propiedad para acceder al objeto más grande.

int main() {
while (true) {
// Take a snapshot to check for detected objects
AIVision6.takeSnapshot (BlueBox);

// Clear the screen/reset so that we can display new information
Brain.Screen.clearScreen ();
Brain.Screen.setCursor (1, 1);

// If objects were found, print the location
if (AIVision6.objects [0] .exists) {
Brain.Screen.print ("Center X: %d, AIVision6.largestObject [0] .centerX);
} else {
Brain.Screen.print ("no object");
}

wait(0.5, seconds);
}
}

AIVision.objects

Otro método para extraer datos es especificando el índice del objeto del que desea extraer datos. La instantánea devuelve los objetos detectados con el objeto más grande primero en el índice 0 y ordena los objetos de mayor a menor.

int main() {
while (true) {
// Take a snapshot to check for detected objects
AIVision6.takeSnapshot (BlueBox);

// Clear the screen/reset so that we can display new information
Brain.Screen.clearScreen ();
Brain.Screen.setCursor (1, 1);

// If objects were found, print the location
if (AIVision6.objects [0] .exists) {
Brain.Screen.print ("Center X: %d, AIVision6.objects [0] .centerX);
} else {
Brain.Screen.print ("no object");
}

wait(0.5, seconds);
}
}

Seleccione qué datos extraer de un objeto

Desde cada objeto, hay ocho propiedades que se pueden llamar.

  • .height
  • .width
  • .centerX
  • .centerY
  • .originX
  • .originY
  • .angle
  • .existe

.height

La propiedad .height devuelve la altura del objeto detectado en píxeles.

Utilice este código para devolver la propiedad .height:

AIVision6.objects[0].height

La propiedad .height devolverá un valor entre 0 y 240 píxeles.

.width

La propiedad .width devuelve el ancho del objeto detectado en píxeles.

Utilice este código para devolver la propiedad .width:

AIVision6.objects[0].width

La propiedad .width devolverá un valor entre 0 y 320.

.centerX

La propiedad .centerX informa de la coordenada X del centro de la Firma Visual detectada.

Utilice este código para devolver la propiedad .centerX:

AIVision6.objects[0].centerX

La propiedad .centerX devolverá un número entre 0 y 320.

.centerY

La propiedad .centerY informa la coordenada Y del centro de la Firma Visual detectada.

Utilice este código para devolver la propiedad .centerY:

AIVision6.objects[0].centerY

La propiedad .centerY devolverá un número entre 0 y 240.

.originX

La propiedad .originX informa de la coordenada X de la esquina superior izquierda de la Firma Visual detectada.

Utilice este código para devolver la propiedad .originX:

AIVision6.objects[0].originX

La propiedad .originX devolverá un número entre 0 y 320.

.originY

La propiedad .originY informa la coordenada Y de la esquina superior izquierda de la firma visual detectada.

Utilice este código para devolver la propiedad .originY:

AIVision6.objects[0].originY

La propiedad .originY devolverá un número entre 0 y 240.

.angle

La propiedad .angle devuelve el valor del ángulo del código de color.

Utilice este código para devolver la propiedad .angle:

AIVision6.objects[0].angle

La propiedad .angle devuelve la orientación del código de color detectado, que oscila entre 0 y 359,99 grados.

.existe

.exists es una propiedad booleana que devuelve true si es un objeto válido. 

Devuelve false si el objeto no es válido, como si se utiliza un entero negativo. Si un objeto no es válido, todas las demás propiedades devolverán 0s como su valor.

int main() {
while (true) {
// Take a snapshot to check for detected objects
AIVision6.takeSnapshot (BlueBox);

// Clear the screen/reset so that we can display new information
Brain.Screen.clearScreen ();
Brain.Screen.setCursor (1, 1);

// If objects were found, print the location
if (AIVision6.objects [0] .exists) {
Brain.Screen.print ("Center X: %d, AIVision6.objects [0] .centerX);
} else {
Brain.Screen.print ("no object");
}

wait(0.5, seconds);
}
}

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: