Gesichtserkennung und -verfolgung mit Arduino und OpenCV

4 Schritt:Schritt 1: Installation und Integration Schritt 2: Befestigen Servos und Kamera Schritt 3: Verdrahtung der Teile zusammen Schritt 4: Ressourcen

Gesichtserkennung und -verfolgung mit Arduino und OpenCV
UPDATES 20. Februar 2013: In Antwort auf eine Frage von Studenten Hala Abuhasna, ob Sie die .NET-Seriell-Klasse verwenden, verwenden Sie die Namenskonvention "\\\\ \\ COMn.", Und ersetzen Sie n mit einer Reihe von> 9 definieren möchten Ihr COM-Anschluss für COM-Anschlüsse über 9 wie COM10, COM11 etc. 23. März 2012: Vorgestellt Adafruit Blog 23. März 2012: Verwendet in Interactive Design 13. Dezember 2011: Sehenswerte auf Floss For Science
Dieser Leitfaden wird auf meinem Blog aufrechterhalten werden http://techbitar.blogspot.com/2012/04/face-detection-and-tracking-with.html

EINFÜHRUNG

In diesem Projekt habe ich eine Gesichtserkennung und Tracking-System montiert. Sie können das Video des endgültigen Projekts finden Sie hier:



Grundsätzlich sendet die Webcam Video-Frames zu OpenCV auf einem Windows-PC läuft. Wenn OpenCV ein Gesicht erkennt es sie zu verfolgen und berechnen die seine Mitte X, Y-Koordinaten. Die Koordinaten werden dann an den Arduino über eine serielle USB-Verbindung bestanden. Das Arduino steuert die Bewegung der Webcam mit der Hilfe von zwei Pan / Tilt-Servos um das erkannte Gesicht zu folgen.

OpenCV (Open Source Computer Vision Library: http://opencv.willowgarage.com/wiki/ ) ist ein Open-Source-Bibliothek, die mehrere hundert Echtzeit-Computer-Vision-Algorithmen umfasst. Die OpenCV 2.x Bibliothek ist eine C ++ API.

Dies ist ein Integrationsprojekt zwischen Hardware- und Software-Tools. Die Bildverarbeitung C ++ Code-Beispiele werden mit der OpenCV-Bibliothek zur Verfügung gestellt und alles, was ich tat, war, den Beispielcode für dieses Projekt zu ändern. Ich entfernte einige der unnötigen Code und das hinzugefügt serielle Kommunikation, um es so zu X Arduino senden kann, Y-Werte.

CREDIT

Dieses Projekt wäre nicht möglich gewesen ohne die Mannschaft, die OpenCV entwickelt möglich. Ich profitierte ebenfalls von Ryan Owens 'Tutorial (http://www.sparkfun.com/tutorials/304), die an Herstellung, Openframeworks basiert, und einer früheren Version von OpenCV. Ich habe versucht, Verarbeitung und Openframeworks ohne Glück zu installieren. So Stattdessen entschied ich mich für Microsoft Visual C ++ 2010 Express und die neueste Version von OpenCV 2.3.1, die ohne Middleware oder Wrapper ist.

TOOLS

Benötigte Software

Arduino IDE 1.0 für Windows
OpenCV 2.3.1 Superpack für Windows
Microsoft Visual C ++ 2010 Express SP1
Serien C ++ Bibliothek für Win32 (von Thierry Schneider)

Code Required

- OpenCV C ++ (Anlage) techbitarFaceDetection.cpp (basierend auf OpenCV Vorbild facedetect.cpp)
- Arduino (Anlage) cam_servo.ino (basierend auf Ryan Owens 'Beispiel SerialServoControl.pde)

Benötigte Hardware

- PC vorzugsweise unter Windows 7 SP1. Die schnellere CPU, desto besser.
- Arduino Uno oder kompatibel + Stromquelle.
- Standard-Servos X 2.
- Webcam w / UBS-Schnittstelle.
- Brotschneidebrett.
- Jumper Drähte.
- Hobby Draht Pan / Tilt-Servos und Webcam zusammen zu binden.

Schritt 1: Installation und Integration



Gesichtserkennung und -verfolgung mit Arduino und OpenCV
1) Laden Sie die OpenCV-2.3.1-win-superpack.exe, wenn Sie nicht wollen, mit der Erzeugung der Support-Dateien selbst umzugehen. Alles, was Sie von OpenCV, um dieses Projekt zu erstellen hat bereits in diesem Download generiert.

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.3.1/

2) Laden und installieren Sie Microsoft Visual C ++ 2010 Express

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express

Die OpenCV Installationsdokumentation erklärt, wie Sie Visual C ++ kennen die OpenCV Support-Dateien (enthalten, bin, etc) zu machen. Dies ist keine Ein-Klick-Job. Besondere Aufmerksamkeit muss, wie Visual C ++ muss konfiguriert werden, dass OpenCV-Dateien zu erkennen gegeben.

Die OpenCV Team getestete Version 2.3.1 und Visual C ++ 2010 Windows 7 SP1. Wenn Sie mit einer anderen Konfiguration sind, für ein paar hiccups.Step 2 hergestellt werden: Bringen Servos und Kamera

Gesichtserkennung und -verfolgung mit Arduino und OpenCV
Ich wollte nicht zu einem Projektteile dauerhaft zu befestigen, weil Ich mag meine Projekte auseinander nehmen, nachdem ich fertig bin. So habe ich Hobby Draht, der nicht mehr als ein steifer Draht, um die Servos und die Webcam zusammen zu binden.

Ich wickelte die Basis der Webcam in die Pfanne Servohorn. Dann wickelte ich ein Kabel um das Horn des Neigungsservo und dem Körper der Pfanne Servo.

Um die ganze Servo / Webcam Montage von beweglichen zufällig im Betrieb zu halten, habe ich einen Haken, um es dem Löten helfende Hände binden. Es behielt während Servodreh stabil.

Es ist nicht schön, aber es funktioniert. Schritt 3: Verdrahtung der Teile zusammen

Gesichtserkennung und -verfolgung mit Arduino und OpenCV
Die Verdrahtung ist einfach. Ich habe ein Steckbrett, um die Verbindungen herzustellen.

SERVOS
Die gelb / Signalleitung für den pan (X-Achse) Servo geht in digitalen Stift 9.
Die gelb / Signalleitung für die Neigung (y-Achse) Servo geht in digitalen Stift 10.
Die rot / Vcc Drähte beider Servos gehen an die Arduino 5V Pin.
Die schwarz / GND Drähte beider Servos gehen Arduino GND Pin.

WEBCAM
USB der Webcam geht an den PC. Die C ++ Code wird es über eine Zahl, die den USB-Anschluss angeschlossen sein, um zu identifizieren. .

ARDUINO
Das Arduino Uno mit dem PC über USB angeschlossen. Beachten Sie die COM-Port der USB angeschlossen ist. Sie können die COM-Schnittstelle aus dem Arduino Tools / Serial Ports Menü. Sie erhalten ein Häkchen neben der aktiven USB-Anschluss zu sehen. Dies ist der COM-Port, die Sie in Ihrem C ++ Code verwenden, um mit Arduino zu kommunizieren.

Sie müssen das C ++ Code zu ändern, um COM-Port und Baudrate des PCs mit Arduino übereinstimmen. Außerdem muss der C ++ Code mitgeteilt werden, welche USB-Anschluss die Webcam mit.

Schritt 4: Ressourcen

Ich fand diese Webseiten informativ sein:

OpenCV Gesichtserkennung / Tracking-Guides

Face Tracking mit Pan / Tilt Servohalterung durch zagGrad
http://www.sparkfun.com/tutorials/304

Arduino + Servo + OpenCV Tutorial [openframeworks]
http://www.creativeapplications.net/tutorials/arduino-servo-opencv-tutorial-openframeworks

OpenCV und Microsoft Visual C ++ Integration

OpenCV 2.3.1 und Visual Studio 2010
http://www.deveature.com/2011/11/24/opencv-2-3-1-and-visual-studio-2010/

Erste Schritte mit OpenCV 2.3 in Microsoft Visual Studio 2010 in Windows gestartet
http://siddhantahuja.wordpress.com/2011/07/18/getting-started-with-opencv-2-3-in-microsoft-visual-studio-2010-in-windows-7-64-bit

OpenCV 2.1.0 mit Visual Studio 2010
http://blog.aguskurniawan.net/post/OpenCV-210-with-Visual-Studio-2010.aspx

Wie man Anwendungen mit OpenCV innerhalb des Microsoft Visual Studio zu bauen
http://opencv.itseez.com/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html

Verwendung OpenCV 2.3.1 mit Visual Studio 2010 (Tutorial)
http://www.anlak.com/using-opencv-2-3-1-with-visual-studio-2010-tutorial