Usando el sensor de visión AI en VEXcode EXP C++

Este artículo proporciona una descripción general de las funciones disponibles para usar AI Vision Sensor en Python, junto con instrucciones sencillas sobre cómo usarlas. Aprenderá los cuatro pasos en el proceso de uso del sensor de visión AI: 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 AI toma una imagen de lo que está mirando actualmente. Cualquier objeto que identifique con la firma visualespecificada se almacena internamente dentro del sensor de visión AI, que luego puede ser utilizado por otras funciones.

.tomar instantáneas

Cualquier Firma visual deberá configurarse antes de poder usarse como parámetro. Cuando utilice este método, especifique el parámetro de firma como el nombre del sensor, doble guión bajo, seguido del nombre de la firma visual .

examen de utilidad.PNG

AIVision6.takeSnapshot(AIVision6__Azul)
AIVision6.takeSnapshot(AIVision6__Red)
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) {
// Toma una instantánea para comprobar si hay objetos detectados
AIVision6.takeSnapshot(Blue);

// Limpiar la pantalla/restablecer para que podamos mostrar nueva información
Brain.Screen.clearScreen();
Cerebro.Screen.setCursor(1, 1);

// Imprime cuántos objetos se detectaron
Brain.Screen.print("recuento de objetos: %d", AIVision6.objectCount);

esperar(0,5, segundos);
}
}

Determinar cuántos objetos se detectaron

Debido a que el método .takeSnapshot puede detectar múltiples 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 Visual Signature en la última instantánea y luego se imprime verdadero o falso si se detecta un objeto. Si se detectó un objeto, imprime el recuento de cuántos objetos se detectaron en total.

int main() {
while (true) {
// Toma una instantánea para comprobar si hay objetos detectados
AIVision6.takeSnapshot(Blue);

// Limpiar la pantalla/restablecer para que podamos mostrar nueva información
Brain.Screen.clearScreen();
Cerebro.Screen.setCursor(1, 1);

// si se encontraron objetos, imprime cuántos
if (AIVision6.objectCount > 0) {
Brain.Screen.newLine();
Brain.Screen.print("recuento de objetos: %d", AIVision6.objectCount);
}

esperar(0,5, segundos);
}
}

Seleccione de qué objeto obtener datos

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

AIVision.objeto más grande

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

int main() {
while (true) {
// Tomar una instantánea para comprobar si hay objetos detectados
AIVision6.takeSnapshot(BlueBox);

// Limpiar la pantalla/restablecer para que podamos mostrar nueva información
Brain.Screen.clearScreen();
Cerebro.Screen.setCursor(1, 1);

// Si se encontraron objetos, imprima la ubicación
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.largestObject[0].centerX);
} else {
Brain.Screen.print("sin objeto");
}

esperar(0,5, segundos);
}
}

AIVision.objetos

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) {
// Tomar una instantánea para comprobar si hay objetos detectados
AIVision6.takeSnapshot(BlueBox);

// Limpiar la pantalla/restablecer para que podamos mostrar nueva información
Brain.Screen.clearScreen();
Cerebro.Screen.setCursor(1, 1);

// Si se encontraron objetos, imprima la ubicación
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("sin objeto");
}

esperar(0,5, segundos);
}
}

Seleccione qué datos extraer de un objeto

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

  • .altura
  • .ancho
  • .centerX
  • .centroY
  • .originX
  • .origenY
  • .ángulo
  • .existe

.altura

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

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

AIVision6.objetos[0].altura

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

.ancho

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

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

AIVision6.objetos[0].ancho

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

.centerX

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

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

AIVision6.objetos[0].centerX

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

.centroY

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

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

AIVision6.objetos[0].centroY

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

.originX

La propiedad .originX informa la coordenada X de la esquina superior izquierda de la firma visual detectada.

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

AIVision6.objetos[0].originX

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

.origenY

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.objetos[0].origenY

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

.ángulo

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

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

AIVision6.objetos[0].ángulo

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 verdadero si es un objeto válido. 

Devolverá falso si el objeto no es válido, como si se utiliza un número entero negativo. Si un objeto no es válido, todas las demás propiedades devolverán 0 como valor.

int main() {
while (true) {
// Tomar una instantánea para comprobar si hay objetos detectados
AIVision6.takeSnapshot(BlueBox);

// Limpiar la pantalla/restablecer para que podamos mostrar nueva información
Brain.Screen.clearScreen();
Cerebro.Screen.setCursor(1, 1);

// Si se encontraron objetos, imprima la ubicación
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("sin objeto");
}

esperar(0,5, segundos);
}
}

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

Last Updated: