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.
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);
}
}