Система розпізнавання та стеження за обличчями

Визначення облич (face detection)

В цьому проекті я об'єднав детектор визначення облич (face detection) і слідкуючу (tracking system) систему.

Коротко суть проекту: вебкамера, встановлена на поворотному механізмі, підключена до комп'ютера під управлінням операційної системи Windows і з встановленим програмним забезпеченням OpenCV. Якщо програма виявляє в полі зору вебкамери обличчя, то обчислюється центр обличчя. Координати X і Y передаються в контролер Arduino, який підключений до комп'ютера через USB. У свою чергу, контролер Arduino за прийнятими командами керує двома сервомоторами: по координаті X і по координаті Y, таким чином забезпечується слідкуюча система.

Бібліотеку OpenCV (Open Source Computer Vision Library) можна завантажити тут. Бібліотека мультиплатформна, наразі існує під наступні ОС: Windows, Linux, Android, Mac OS і навіть iOS. Бібліотека забезпечує обробку зображень в режимі реального часу. Написана на C/C++.

Таким чином, цей проект являє собою суміш софтверних і хардварних рішень. Обробка зображення ведеться на комп'ютері, а управління сервомоторами здійснюється за допомогою контролера.

Отже, що я використав для проекту:

Програмне забезпечення:
Arduino IDE 1.0 for Windows
OpenCV 2.3.1 SuperPack для Windows
Microsoft Visual C++ 2010 Express SP1
Serial C++ Library for Win32 (від Thierry Schneider)

Апаратура:
комп'ютер з ОС Windows 7 SP1
Arduino Uno або сумісний + БП
2 сервопривода
USB вебкамера

Отже, поїхали.

Крок 1. Встановлення програмного забезпечення

1) Якщо у вас ОС Windows, то скачайте файл OpenCV-2.3.1-win-superpack.exe (або більш пізню версію) і встановіть бібліотеку.

2) Скачайте і встановіть Microsoft Visual C++ 2010 Express. Якщо у вас 64-бітна версія Windows, то також необхідно буде завантажити Windows SDK (але для 64 версії можуть бути проблеми, я так і не зміг змусити працювати OpenCV під Windows 7 x64).

Процес налаштування OpenCV для Visual C++ читайте на офіційному сайті.

Крок 2. Кріплення камери і сервомоторів

Кріплення вебкамери

Я не став робити конструкцію "довговічною", тому що після досягнення кінцевої мети я все розбираю для наступного проекту.
Вебкамеру я прикріпив до сервомотора осі X, а його, в свою чергу, закріпив на сервомоторі осі Y. І всю цю конструкцію закріпив у струбцині від "трьох рук".

Функціональна схема детектора

Крок 3. Підключення

Підключення сервомоторів:
Жовтий вихід від серво осі X підключається до виходу 9 контролера Arduino
Жовтий вихід від серво осі Y підключається до виходу 10 контролера Arduino
Червоний вихід Vcc від серво підключається до виходу 5V
Чорний вихід GND від серво підключається до виходу GND контролера Arduino

Підключення вебкамери:
Вебкамера підключається до комп'ютера через USB інтерфейс. Програма C++ ідентифікує вебкамеру за номером USB-порту. Можливо, знадобиться вказати порт у програмі.

Підключення контролера Arduino UNO:
Контролер також підключається до комп'ютера через USB-інтерфейс. У системі з'являється віртуальний COM-порт, який необхідно внести в код програми на C++.

Оригінал статті

Прикріплені файли:
Top