У цій статті наведено огляд функцій, доступних для використання датчика AI Vision у Python, а також прості інструкції щодо їх використання. Ви дізнаєтесь про чотири кроки в процесі використання датчика зору AI: отримання даних, перегляд кількості отриманих об’єктів, вибір об’єкта з даних для використання та які дані з об’єкта отримати.
Отримуйте візуальні дані за допомогою датчика AI Vision Sensor
Щоб збирати інформацію про навколишнє середовище, датчик AI Vision Sensor робить зображення того, на що він зараз дивиться. Будь-які об’єкти, які він ідентифікує за допомогою зазначеногоVisual Signature поміщаються в кортеж, який потім може використовуватися іншими функціями.
take_snapshot
Під час використання команди take_snapshot
вам потрібно буде створити змінну для зберігання кортежу, який вона створює. Будь-яківізуальних підписів потрібно буде налаштувати, перш ніж їх можна буде використовувати як параметр. Під час використання функції вкажіть параметр підпису як ім’я датчика, подвійне підкреслення та назву візуального підпису.
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Red)
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Green)
Опції для вашого Visual Signature також автоматично заповнюватимуть VEXcode після того, як ви почнете вводити початок дужок.
приклад
У цьому прикладі змінна vision_objects
зберігає кортеж, що містить виявлені візуальні сигнатури від датчика AI Vision Sensor під назвою ai_vision_6
. Він відображає кількість виявлених об’єктів і робить новий знімок кожні 0,5 секунди.
while True:
# Зробити знімок для створення кортежу виявлених об’єктів
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen .print("кількість об'єктів:", len(vision_objects))
очікування(0,5, СЕКУНДИ)
Визначте, скільки об'єктів було виявлено
Команду len
можна використовувати з кортежами. Це можна використовувати, щоб побачити, скільки об’єктів команда take_snapshot
зберегла в кортежі.
Найкраще завжди переконатися, що ви виявили об’єкт, перш ніж намагатися отримати будь-яку інформацію зі знімка. Для цього скористайтеся командою len
зі змінною, у якій зберігається кортеж.
len(vision_objects) > 0
приклад
У цьому прикладі змінна vision_objects
зберігає кортеж, що містить виявлені візуальні сигнатури від датчика AI Vision Sensor під назвою ai_vision_6
. Він відображає кількість виявлених об’єктів і робить новий знімок кожні 0,5 секунди. Однак, якщо він виявив об’єкт, він надрукує кількість виявлених об’єктів.
while True:
# Зробити знімок для створення кортежу виявлених об’єктів
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)
# Очистити екран/скинути налаштування, щоб ми могли відобразити нову інформацію
brain.screen.clear_screen()
brain. screen.set_cursor(1, 1)
if len(vision_objects) > 0:
# Вивести кількість знайдених об'єктів
brain.screen.next_row()
brain.screen.print("кількість об'єктів:", len(vision_objects ))
очікування (0,5, СЕКУНДИ)
Використовуючи команду len
із кортежем, ви також можете побачити, скільки об’єктів було виявлено.
Виберіть, з якого об’єкта отримати дані
Існує два способи отримання даних із кортежу. Одним із підходів є пряме отримання інформації з найбільшого об’єкта, виявленого під час останнього використання команди take_snapshot
за допомогою функції ai.vision.largest_object()
. Інший метод передбачає вказівку конкретної змінної та індексу об’єкта.
ai.vision.largest_object()
ai.vision.largest_object()
є допоміжною функцією для доступу до найбільшого об’єкта в кортежі, але вона працюватиме лише з останнім знімком.
while True:
# Зробити знімок для створення кортежу виявлених об’єктів
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)
# Очистити екран/скинути налаштування, щоб ми могли відобразити нову інформацію
brain.screen.clear_screen()
brain. screen.set_cursor(1, 1)
# Перевірте, чи існує об’єкт перед отриманням даних
if len(vision_objects) > 0:
brain.screen.print(Center X: ", ai_vision.largest_object().centerX)
else :
brain.screen.print("no object")
wait(0.5, SECONDS)
У цьому прикладі код перевіряє, чи існує об’єкт, перш ніж використовувати функцію ai.vision.largest_object()
для повернення властивості .centerX
найбільшого виявленого об’єкта та його друку.
vision_objects[0]
Інший спосіб отримати дані з кортежу — це напряму викликати змінну, яка зберігає кортеж. У квадратних дужках вкажіть індекс об’єкта, з якого потрібно отримати дані. Повернений кортеж об’єктів завжди містить найбільший об’єкт першим з індексом 0. Згодом об’єкти впорядковуються від найбільшого до найменшого.
while True:
# Зробити знімок для створення кортежу виявлених об’єктів
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)
# Очистити екран/скинути налаштування, щоб ми могли відобразити нову інформацію
brain.screen.clear_screen()
brain. screen.set_cursor(1, 1)
# Перевірте, чи існує об’єкт перед отриманням даних
if len(vision_objects) > 0:
brain.screen.print(Center X: ", vision_object[0].centerX)
else:
brain.screen.print("no object")
wait(0.5, SECONDS)
У цьому прикладі код перевіряє, чи існує об’єкт, перш ніж використовувати функцію vision_object[0]
для повернення властивості .centerX
об’єкта 0 index і його друку.
Виберіть, які дані отримати з об’єкта
З кожного об’єкта є вісім властивостей, які можна викликати.
.висота
.ширина
.centerX
.centerY
.originX
.originY
.кут
.існує
.висота
Властивість .height
повертає висоту виявленого об’єкта в пікселях.
Використовуйте цей код, щоб повернути властивість .height
:
vision_objects[0].height
Властивість .height
поверне значення від 0 до 240 пікселів.
.ширина
Властивість .width
повертає ширину виявленого об’єкта в пікселях.
Використовуйте цей код, щоб повернути властивість .width
:
vision_objects[0].width
Властивість .width
поверне значення від 0 до 320.
.centerX
Властивість .centerX
повідомляє координату X центру виявленої Візуальної сигнатури.
Використовуйте цей код, щоб повернути властивість .centerX
:
vision_objects[0].centerX
Властивість .centerX
поверне число від 0 до 320.
.centerY
Властивість .centerY
повідомляє координату Y центру виявленої Візуальної сигнатури.
Використовуйте цей код, щоб повернути властивість .centerY
:
vision_objects[0].centerY
Властивість .centerY
поверне число від 0 до 240.
.originX
Властивість .originX
повідомляє координату X крайнього верхнього лівого кута виявленої візуальної сигнатури.
Використовуйте цей код, щоб повернути властивість .originX
:
vision_objects[0].originX
Властивість .originX
поверне число від 0 до 320.
.originY
Властивість .originY
повідомляє координату Y крайнього верхнього лівого кута виявленої візуальної сигнатури .
Використовуйте цей код, щоб повернути властивість .originY
:
vision_objects[0].originY
Властивість .originY
поверне число від 0 до 240.
.кут
Властивість .angle
повертає значення кута коду кольору .
Використовуйте цей код, щоб повернути властивість .angle
:
vision_objects[0].angle
Властивість .angle
повертає виявлену орієнтацію коду кольору в діапазоні від 0 до 359,99 градусів.
.існує
.exists
є логічною властивістю, яка повертає істину, якщо це дійсний об’єкт.
Він поверне false, якщо об’єкт недійсний, наприклад, якщо використовується від’ємне ціле число. Якщо об’єкт недійсний, усі інші властивості повертатимуть 0 як значення.
while True:
# Зробіть знімок для створення кортежу виявлених об’єктів
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)
# очистіть екран/скиньте, щоб ми могли відобразити нову інформацію
brain.screen.clear_screen()
brain.screen .set_cursor(1, 1)
if vision_objects[0].exists:
brain.screen.print("x:", vision_objects[0].centerX)
else:
brain.screen.print("no object" )
очікування (0,1, СЕКУНДИ)
У цьому прикладі код перевіряє властивість .exists
, якщо він повертає значення true, він друкує значення властивості .centerX
у Brain. Якщо властивість .exists
повертає false, буде надруковано, що об’єкта немає.