Verwendung des AI Vision Sensors in VEXcode EXP C++

Dieser Artikel bietet einen Überblick über die verfügbaren Funktionen zur Verwendung des AI Vision Sensors in Python sowie einfache Anweisungen zu deren Verwendung. Sie lernen die vier Schritte im Prozess der Verwendung des AI Vision Sensors kennen – Daten abrufen, die Menge der erhaltenen Objekte sehen, auswählen, welches Objekt aus den Daten verwendet werden soll und welche Daten aus dem Objekt gezogen werden sollen.

Erhalten Sie visuelle Daten mit dem AI Vision Sensor

Um Informationen aus seiner Umgebung zu sammeln, macht der AI Vision Sensor ein Bild von dem, was er gerade betrachtet. Alle Objekte, die er mit der angegebenenVisual Signature identifiziert, werden intern im AI Vision Sensor gespeichert und können dann von anderen Funktionen verwendet werden.

.Schnappschuss machen

Alle visuellen Signaturen müssen konfiguriert werden, bevor sie als Parameter verwendet werden können. Wenn Sie diese Methode verwenden, geben Sie den Signaturparameter als Namen des Sensors mit doppeltem Unterstrich an, gefolgt vom Namen der visuellen Signatur.

Dienstprogramm exm.PNG

AIVision6.takeSnapshot(AIVision6__Blue)
AIVision6.takeSnapshot(AIVision6__Red)
AIVision6.takeSnapshot(AIVision6__Green)

Beispiel

In diesem Beispiel wird die Methode .takeSnapshot verwendet, um nach Objekten zu suchen, die der visuellen Signatur „Blau“ entsprechen. Anschließend zeigt der Code die Anzahl der Objekte an, die für diese visuelle Signatur gefunden wurden.

int main() {
while (true) {
// Schnappschuss erstellen, um nach erkannten Objekten zu suchen
AIVision6.takeSnapshot(Blue);

// Bildschirm löschen/zurücksetzen, damit wir neue Informationen anzeigen können
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Drucken, wie viele Objekte erkannt wurden
Brain.Screen.print("object count: %d", AIVision6.objectCount);

wait(0,5, Sekunden);
}
}

Bestimmen Sie, wie viele Objekte erkannt wurden

Da die Methode .takeSnapshot mehrere Objekte mit visuellen Signatur gleichzeitig erkennen kann, können Sie mit der Eigenschaft .objectCount herausfinden, wie viele Objekte erkannt wurden.

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

Beispiel

In diesem Beispiel wird die Eigenschaft .objectCount verwendet, um zu prüfen, ob im letzten Snapshot mindestens 1 Visual Signature erkannt wurde, und dann entweder „true“ oder „false“ auszugeben, wenn ein Objekt erkannt wurde. Wenn ein Objekt erkannt wurde, wird die Anzahl der insgesamt erkannten Objekte ausgedruckt.

int main() {
while (true) {
// Schnappschuss erstellen, um nach erkannten Objekten zu suchen
AIVision6.takeSnapshot(Blue);

// Bildschirm löschen/zurücksetzen, damit wir neue Informationen anzeigen können
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// wenn Objekte gefunden wurden, wie viele ausgeben
if (AIVision6.objectCount > 0) {
Brain.Screen.newLine();
Brain.Screen.print("Objektanzahl: %d", AIVision6.objectCount);
}

wait(0,5, Sekunden);
}
}

Wählen Sie aus, von welchem ​​Objekt Daten abgerufen werden sollen

Es gibt zwei Methoden, um Daten vom AI Vision Sensor zu extrahieren. Ein Ansatz besteht darin, Informationen direkt vom größten Objekt abzurufen, das bei der letzten Verwendung der Methode .takeSnapshot mithilfe der Eigenschaft AIVision.largestObject erkannt wurde. Die andere Methode verwendet die Eigenschaft AIVision.objects[] und gibt einen Objektindex an.

AIVision.largestObject

ai.vision.largest_object() ist eine Eigenschaft für den Zugriff auf das größte Objekt.

int main() {
while (true) {
// Schnappschuss erstellen, um nach erkannten Objekten zu suchen
AIVision6.takeSnapshot(BlueBox);

// Bildschirm löschen/zurücksetzen, damit wir neue Informationen anzeigen können
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Wenn Objekte gefunden wurden, geben %dden Speicherort aus

(AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("no object");
}

wait(0.5, seconds);
}
}

AIVision.objects

Eine andere Methode zum Abrufen von Daten besteht darin, den Index des Objekts anzugeben, aus dem Sie Daten extrahieren möchten. Der Schnappschuss gibt die erkannten Objekte zurück, wobei das größte Objekt zuerst am Index 0 liegt, und ordnet die Objekte vom größten zum kleinsten.

int main() {
while (true) {
// Schnappschuss erstellen, um nach erkannten Objekten zu suchen
AIVision6.takeSnapshot(BlueBox);

// Bildschirm löschen/zurücksetzen, damit wir neue Informationen anzeigen können
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Wenn Objekte gefunden wurden, geben %dden Speicherort

if (AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("no object");
}

wait(0.5, seconds);
}
}

Wählen Sie aus, welche Daten aus einem Objekt abgerufen werden sollen

Von jedem Objekt können acht Eigenschaften aufgerufen werden.

  • .Höhe
  • .Breite
  • .centerX
  • .centerY
  • .originX
  • .originY
  • .Winkel
  • .existiert

.Höhe

Die Eigenschaft .height gibt zurück, wie hoch das erkannte Objekt in Pixeln ist.

Verwenden Sie diesen Code, um die Eigenschaft .height zurückzugeben:

AIVision6.objects[0].height

Die Eigenschaft .height gibt einen Wert zwischen 0 und 240 Pixel zurück.

.Breite

Die Eigenschaft .width gibt zurück, wie breit das erkannte Objekt in Pixeln ist.

Verwenden Sie diesen Code, um die Eigenschaft .width zurückzugeben:

AIVision6.objects[0].width

Die Eigenschaft .width gibt einen Wert zwischen 0 und 320 zurück.

.centerX

Die Eigenschaft .centerX gibt die X-Koordinate des Mittelpunkts der erkannten visuellen Signaturan.

Verwenden Sie diesen Code, um die Eigenschaft .centerX zurückzugeben:

AIVision6.objects[0].centerX

Die Eigenschaft .centerX gibt eine Zahl zwischen 0 und 320 zurück.

.centerY

Die Eigenschaft .centerY gibt die Y-Koordinate des Mittelpunkts der erkannten visuellen Signaturan.

Verwenden Sie diesen Code, um die Eigenschaft .centerY zurückzugeben:

AIVision6.objects[0].centerY

Die Eigenschaft .centerY gibt eine Zahl zwischen 0 und 240 zurück.

.originX

Die Eigenschaft .originX meldet die X-Koordinate der oberen linken Ecke der erkannten visuellen Signatur.

Verwenden Sie diesen Code, um die Eigenschaft .originX zurückzugeben:

AIVision6.objects[0].originX

Die Eigenschaft .originXgibt eine Zahl zwischen 0 und 320 zurück.

.originY

Die Eigenschaft .originY meldet die Y-Koordinate der oberen linken Ecke der erkannten visuellen Signatur.

Verwenden Sie diesen Code, um die Eigenschaft .originY zurückzugeben:

AIVision6.objects[0].originY

Die Eigenschaft .originYgibt eine Zahl zwischen 0 und 240 zurück.

.Winkel

Die Eigenschaft .angle gibt den Wert des Winkels des Farbcodes zurück.

Verwenden Sie diesen Code, um die Eigenschaft .angle zurückzugeben:

AIVision6.objects[0].angle

Die Eigenschaft .angle gibt die Ausrichtung des erkannten -Farbcodes im Bereich von 0 bis 359,99 Grad zurück.

.existiert

.exists ist eine boolesche Eigenschaft, die true zurückgibt, wenn es sich um ein gültiges Objekt handelt. 

Es wird „false“ zurückgegeben, wenn das Objekt ungültig ist, beispielsweise wenn eine negative Ganzzahl verwendet wird. Wenn ein Objekt ungültig ist, geben alle anderen Eigenschaften Nullen als Wert zurück.

int main() {
while (true) {
// Schnappschuss erstellen, um nach erkannten Objekten zu suchen
AIVision6.takeSnapshot(BlueBox);

// Bildschirm löschen/zurücksetzen, damit wir neue Informationen anzeigen können
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Wenn Objekte gefunden wurden, geben %dden Speicherort

if (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: