Продвинутое отслеживание теннисного мяча на Raspberry Pi с OpenCV
ПРИМЕЧАНИЕ: Это продвинутое руководство, не подходит для новичков в Linux.
В этом руководстве мы покажем, как обнаруживать и отслеживать теннисные мячи для настольного тенниса — или любой четко видимый круглый объект — с использованием OpenCV на Raspberry Pi. Техника ценна для робототехнических проектов, спортивной аналитики или экспериментов энтузиастов.
Предварительные требования
- Raspberry Pi с последним Raspbian (скачать на https://www.raspberrypi.org/downloads/)
- USB-веб-камера, совместимая с Pi
- Linux-хост (Linux Mint 17, Ubuntu или похожий) для разработки и передачи файлов
- Знакомство с Debian-базированными системами
Шаг 1: Первоначальная настройка
- Подключите Pi к клавиатуре, мыши, веб-камере, Ethernet или Wi‑Fi адаптеру, HDMI-дисплею и питанию.
- Включите и загрузитесь в графический интерфейс Raspbian.
- Откройте терминал и установите OpenCV. Следуйте подробному руководству Тревора Эпплтона для подтверждения установки (Установка OpenCV на Raspberry Pi).
- Передайте файл
bdtct.pyв домашнюю директорию Pi черезscpили USB-флешку.
Шаг 2: Запуск кода отслеживания
- В терминале Pi перейдите в папку с
bdtct.py. - Выполните скрипт:
sudo python bdtct.py - Должно появиться пять окон: исходное видео, вид «tracking» и три панели настройки HSV.
- Покажите теннисный мяч (желтый предпочтительно) веб-камере.
- Настройте ползунки «HueComp», «SatComp» и «ValComp», пока пиксели мяча не станут единственной белой областью в окне «closing». Запишите эти значения для будущего использования, отредактировав
bdtct.py.
Шаг 3: Понимание алгоритма
Откройте bdtct.py в любимом редакторе, чтобы увидеть следующий рабочий процесс:
- Захват видео с камеры по умолчанию:
cap = cv2.VideoCapture(-1) - Изменение размера кадров до 320×240 для повышения частоты кадров на Pi.
- Создание интерактивных окон с ползунками min/max для Hue, Saturation и Value.
- Конвертация каждого кадра из BGR в HSV:
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV). - Разделение HSV на отдельные каналы.
- Пороговое преобразование каждого канала на основе диапазонов ползунков для получения бинарных масок.
- Комбинирование трех масок логическим И для изоляции пикселей мяча.
- Применение гауссова размытия для сглаживания результата.
- Использование
cv2.HoughCirclesдля обнаружения круглых форм. - Отрисовка обнаруженных кругов обратно на исходном кадре для визуализации.
Для более глубокого понимания см. полную документацию проекта.
Производственный процесс
- DIY солнечная метеостанция на Raspberry Pi
- Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
- Сборка уличной метеостанции на Raspberry Pi 2 и ADS‑WS1
- Точный мониторинг температуры в серверной на Raspberry Pi
- Neon: динамичный открытый/закрытый знак мейкерспейса на Raspberry Pi 2 — Эль-Пасо, TX
- Датчик слежения за линией на Raspberry Pi — простой детектор двери/линии KY‑033
- Создание профессионального универсального пульта на Raspberry Pi с LIRC
- Преобразование RF в DC с Raspberry Pi: сборка и отладка детектора огибающей
- Cycle Chaser: превратите свой велосипед в ночной световый шоу с Raspberry Pi
- Практическое руководство: real-time панорамирование/наклон для отслеживания лиц на Raspberry Pi