Використання сенсора AI Vision у VEXcode V5 C++

У цій статті наведено огляд функцій, доступних для використання датчика AI Vision у Python, а також прості інструкції щодо їх використання. Ви дізнаєтеся про чотири кроки в процесі використання датчика зору AI, отримання даних, перегляд кількості отриманих об’єктів, вибір об’єкта з даних для використання та які дані з об’єкта отримати.

Отримуйте візуальні дані за допомогою датчика AI Vision Sensor

Щоб збирати інформацію про навколишнє середовище, датчик AI Vision Sensor робить зображення того, на що він зараз дивиться. Будь-які об’єкти, які він ідентифікує за допомогою зазначеногоVisual Signature , зберігаються всередині датчика зору AI, який потім може використовуватися іншими функціями.

.takeSnapshot

Будь-які візуальних підписів потрібно буде налаштувати, перш ніж їх можна буде використовувати як параметр. Під час використання методу вкажіть параметр підпису як ім’я датчика, подвійне підкреслення, а потім ім’я Visual Signature’s.

utility exm.PNG

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

приклад

У цьому прикладі метод .takeSnapshot використовується для пошуку будь-яких об’єктів, які відповідають «синьому» візуальному підпису. Тоді код відобразить кількість об’єктів, знайдених для цього Visual Signature.

int main() {
while (true) {
// Зробіть знімок, щоб перевірити виявлені об'єкти
AIVision6.takeSnapshot(Blue);

// Очистити екран/скинути, щоб ми могли відобразити нову інформацію
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Вивести кількість виявлених об'єктів
Brain.Screen.print("кількість об'єктів: %d", AIVision6.objectCount);

очікування (0,5, секунди);
}
}

Визначте, скільки об'єктів було виявлено

Оскільки метод .takeSnapshot може одночасно виявляти кілька об’єктів з однаковою Візуальною сигнатурою , ви можете дізнатися, скільки об’єктів було виявлено за допомогою властивості .objectCount.

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

приклад

У цьому прикладі властивість .objectCount використовується для перевірки того, чи було виявлено принаймні 1 Visual Signature на останньому знімку, а потім друкується значення true або false, якщо виявлено об’єкт. Якщо об’єкт було виявлено, він друкує підрахунок загальної кількості виявлених об’єктів.

int main() {
while (true) {
// Зробіть знімок, щоб перевірити виявлені об'єкти
AIVision6.takeSnapshot(Blue);

// Очистити екран/скинути, щоб ми могли відобразити нову інформацію
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// якщо об'єкти знайдено, вивести їх кількість
if (AIVision6.objectCount > 0) {
Brain.Screen.newLine();
Brain.Screen.print("кількість об'єктів: %d", AIVision6.objectCount);
}

очікування (0,5 секунд);
}
}

Виберіть, з якого об’єкта отримати дані

Існує два методи отримання даних із датчика зору AI. Одним із підходів є пряме отримання інформації з найбільшого об’єкта, виявленого під час останнього використання методу .takeSnapshot за допомогою властивості AIVision.largestObject. Інший метод використовує властивість AIVision.objects[] і вказує індекс об’єкта.

AIVision.largestObject

ai.vision.largest_object() — властивість доступу до найбільшого об’єкта.

int main() {
while (true) {
// Зробіть знімок, щоб перевірити виявлені об'єкти
AIVision6.takeSnapshot(BlueBox);

// Очистити екран/скинути, щоб ми могли відобразити нову інформацію
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Якщо об’єкти знайдено, надрукувати розташування
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.largestObject[0].centerX);
} else {
Brain.Screen.print("no object");


(0.5, seconds)

AIVision.об'єкти

Інший спосіб отримати дані – це вказати індекс об’єкта, з якого ви хочете отримати дані. Знімок повертає виявлені об’єкти з найбільшим об’єктом на початку з індексом 0 і впорядковує об’єкти від найбільшого до найменшого.

int main() {
while (true) {
// Зробіть знімок, щоб перевірити виявлені об'єкти
AIVision6.takeSnapshot(BlueBox);

// Очистити екран/скинути, щоб ми могли відобразити нову інформацію
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Якщо об’єкти знайдено, надрукувати розташування
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("no object");


(0.5, seconds)

Виберіть, які дані отримати з об’єкта

З кожного об’єкта є вісім властивостей, які можна викликати.

  • .висота
  • .ширина
  • .centerX
  • .centerY
  • .originX
  • .originY
  • .кут
  • .існує

.висота

Властивість .height повертає висоту виявленого об’єкта в пікселях.

Використовуйте цей код, щоб повернути властивість .height:

AIVision6.objects[0].height

Властивість .height поверне значення від 0 до 240 пікселів.

.ширина

Властивість .width повертає ширину виявленого об’єкта в пікселях.

Використовуйте цей код, щоб повернути властивість .width:

AIVision6.objects[0].width

Властивість .width поверне значення від 0 до 320.

.centerX

Властивість .centerX повідомляє координату X центру виявленої Візуальної сигнатури.

Використовуйте цей код, щоб повернути властивість .centerX:

AIVision6.objects[0].centerX

Властивість .centerX поверне число від 0 до 320.

.centerY

Властивість .centerY повідомляє координату Y центру виявленої Візуальної сигнатури.

Використовуйте цей код, щоб повернути властивість .centerY:

AIVision6.objects[0].centerY

Властивість .centerY поверне число від 0 до 240.

.originX

Властивість .originX повідомляє координату X крайнього верхнього лівого кута виявленої візуальної сигнатури.

Використовуйте цей код, щоб повернути властивість .originX:

AIVision6.objects[0].originX

Властивість .originXповерне число від 0 до 320.

.originY

Властивість .originY повідомляє координату Y крайнього верхнього лівого кута виявленої візуальної сигнатури .

Використовуйте цей код, щоб повернути властивість .originY:

AIVision6.objects[0].originY

Властивість .originYповерне число від 0 до 240.

.кут

Властивість .angle повертає значення кута коду кольору .

Використовуйте цей код, щоб повернути властивість .angle:

AIVision6.objects[0].angle

Властивість .angle повертає виявлену орієнтацію коду кольору в діапазоні від 0 до 359,99 градусів.

.існує

.exists є логічною властивістю, яка повертає істину, якщо це дійсний об’єкт. 

Він поверне false, якщо об’єкт недійсний, наприклад, якщо використовується від’ємне ціле число. Якщо об’єкт недійсний, усі інші властивості повертатимуть 0 як значення.

int main() {
while (true) {
// Зробіть знімок, щоб перевірити виявлені об'єкти
AIVision6.takeSnapshot(BlueBox);

// Очистити екран/скинути, щоб ми могли відобразити нову інформацію
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Якщо об’єкти знайдено, надрукувати розташування
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("no object");


(0.5, seconds)

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

Last Updated: