Jeffrey Cross
Jeffrey Cross

Machen Sie mit Processing einen vernetzten Gesichtssensor

Diese Codebox untersucht, wie ein Webserver verwendet wird, um Sensordaten aus einer Verarbeitungsskizze zu erfassen. Als Beispiel verwenden wir OpenCV, um die Anzahl der Gesichter, die im Sichtfeld Ihrer Webcam erscheinen, regelmäßig zu ermitteln und zu melden. Sie können so etwas auf einer Konferenz oder Kunstmesse verwenden, um zu sehen, wie viele Personen an einer bestimmten Sitzung oder Ausstellung interessiert sind. Mithilfe dieses Datenfeeds können Sie dann eine mobile App erstellen, die Ihnen zeigt, wo sich zu einer bestimmten Zeit die meisten Teilnehmer einer Konferenz befinden.

Richten Sie den Webserver ein

Für dieses Projekt benötigen Sie mit PHP Zugriff auf einen Webserver. (PHP ist eine Skriptsprache zum Erstellen von Websites, die von fast jedem Hosting-Unternehmen angeboten wird.) Wenn Sie kein Konto bei einem Hosting-Unternehmen haben, können Sie einfach einen Webserver auf Ihrem eigenen Computer einrichten. Die meisten neuen Macs werden mit Apache, einem der beliebtesten Webserver, vorinstalliert. Alles was Sie tun müssen, ist es zu aktivieren. Dies können Sie über die Systemeinstellungen Ihres Computers tun. Öffnen Sie einfach die Einstellungen, klicken Sie auf "Freigabe" und überprüfen Sie dann die "Webfreigabe" in der Liste links. (Wenn Sie Windows verwenden, müssen Sie einen externen Server installieren. Ich hatte großen Erfolg mit XAMPP, das alles enthält, was Sie brauchen.)

Wenn alles gut geht, wird die Statusanzeige "Web Sharing: Ein" grün leuchten. Sie sehen auch die Adresse, die Sie in Ihrem Browser verwenden können, um auf das "Stammverzeichnis" Ihrer Website zuzugreifen. (Notieren Sie sich diese Adresse, da wir sie später in der Verarbeitungsskizze benötigen.) Die folgende Abbildung zeigt Ihnen mehr Details:

Sobald die Freigabe aktiviert ist, können Sie das PHP-Skript einrichten, das die Daten protokolliert. Dazu fügen Sie einige Dateien im Stammverzeichnis des Webservers hinzu. Auf einem Mac ist dies normalerweise das Verzeichnis „Sites“, das sich an derselben Stelle wie Ihre Verzeichnisse Music, Movies und Documents befindet.

Um mit der Einrichtung des Skripts zu beginnen, legen Sie ein Terminal ab und geben Sie die folgenden Befehle ein:

cd ~ / sites / mkdir gesichtssensor cd gesichtssensor touch sensor_log.txt chmod 777 sensor_log.txt

In dieser Befehlsfolge wechseln wir in das "root" -Verzeichnis, in dem der Webserver des Mac nach Dateien sucht. Er erstellt ein neues Verzeichnis mit dem Namen "face_sensor" und fügt dann eine leere Protokolldatei hinzu, in die unser PHP-Skript schreiben kann. Dieser letzte Schritt besteht aus zwei Teilen: Der erste ist die Verwendung von berühren Befehl zum Erstellen einer neuen, leeren Protokolldatei. Der zweite Schritt ist die Verwendung der chmod Befehl, um die Berechtigungen für die Datei festzulegen, damit PHP Daten in die Datei schreiben kann.

Als Nächstes müssen Sie Ihr System so konfigurieren, dass der Server PHP-Skripts ausführen kann. In SerpicoLugNut unter Stackoverflow wird beschrieben, wie Sie PHP und MySQL unter Mac OS 10.6 (Snow Leopard) auf einfachste Weise aktivieren. Folgendes sagt er zu tun:

Öffnen Sie einen guten Texteditor (ich würde TextMate empfehlen, aber der kostenlose TextWrangler oder vi oder nano tun dies auch), und öffnen Sie: /etc/apache2/httpd.conf Suchen Sie die Zeile: "#LoadModule php5_module libexec / apache2 / libphp5. also "und kommentiere es (entferne das #).

Wenn das Verzeichnis fertig ist, speichern Sie das folgende PHP in einer Datei namens record.php:

Wenn Sie die Datei kopiert haben, gehen Sie zu Ihrem Browser und geben Sie die folgende URL ein:

http: //Ihre persönliche Website-Adresse im Freigabefeld/face_sensor/record.php?face_count=5&room_name=ballroom&interval=2000

Ihr Browser sollte "OK" sagen. Wenn Sie das öffnen sensor_log.txt Datei, Sie sollten eine Zeile sehen, die folgendermaßen aussieht:

01-12-2010 06:01:41 EST Ballsaal 5 2000

Also was passiert gerade? Grundsätzlich zieht das PHP-Skript einfach die Werte heraus, die wir in die Abfragezeichenfolge der URL (z. B. face_count, room_name und Intervall) eingeben, und schreibt sie in eine durch Tabulatoren getrennte Datei. Das ist es. (Nun, OK, es werden auch Datum und Uhrzeit hinzugefügt.)

In einem „echten“ System würden Sie diese Werte höchstwahrscheinlich in eine Datenbank schreiben. Dies würde jedoch den Rahmen dieses Beitrags sprengen. Hauptsächlich möchten Sie zeigen, wie Sie mithilfe von Processing Daten an eine Website senden, nicht an die Angaben dazu, wie diese Website die Daten aufzeichnet. Wenn Sie daran interessiert sind, das Backend-Stück weiterzuverfolgen, ist der Artikel von Kevin Yank zum Erstellen einer datenbankgesteuerten Website mit PHP & MySQL Teil 1: Die Installation ist ein guter Ausgangspunkt.

Richten Sie die Skizze ein

Nun, da der Webserver eingerichtet ist und Daten protokollieren kann, erstellen Sie als Nächstes eine Verarbeitungsskizze, die Gesichter erkennt und an Ihren Server zurückmeldet. Vergewissern Sie sich vor dem Start, dass Sie die externen Bibliotheken controlP5 und OPENCV Processing installiert haben. (Wenn Sie mit externen Bibliotheken nicht vertraut sind, lesen Sie den Abschnitt Importieren von Bibliotheken in Bearbeitung bei O’Reilly Answers.) Wenn die Bibliotheken installiert sind, starten Sie Processing, und fügen Sie den Code für networked_face_sensor.pde in das Skizzenfenster ein:

Außerdem müssen Sie das ändern transmission_url um es auf die Adresse Ihres PHP-Skripts einzustellen. Die Linie

String transmission_url = "http: //MacOdewahn.home/~odewahn/face_sensor/record.php";

muss auf aktualisiert werden

String transmission_url = "http: //Ihre persönliche Website-Adresse im Freigabefeld/face_sensor/record.php ";

Wenn Sie die Skizze starten, werden Sie feststellen, dass Sie zunächst das Quellvideo auswählen müssen, das Sie verwenden möchten. Dies erfolgt mit dem Befehl Nockeneinstellungen ();. Auf diese Weise können Sie eine externe Webkamera anschließen, anstatt nur die integrierte Webcam zu verwenden. Nachdem Sie die Quelle ausgewählt haben, sollten Sie den Video-Feed sehen.

Der Gesichtserkennungs- und Berichterstellungsvorgang findet alle 2 Sekunden statt, wie in angegeben Intervall Variable. Sie können auch einen "Raumnamen" eingeben, damit Sie die mehreren Datenquellen unterscheiden können. Beispielsweise können Sie eine Kamera in Ihrem Wohnzimmer und eine in Ihrer Küche ausführen, wobei beide an denselben zentralen Server berichten.

Nach einigen Sekunden können Sie das Protokoll in Ihrem Webbrowser öffnen und die Daten anzeigen, die Ihre Sensoren gemeldet haben. Die URL dafür ist:

http: //Ihre persönliche Website-Adresse im Freigabefeld/face_sensor/sensor_log.txt

Es wird ungefähr so ​​aussehen:

Diskussion

Wie Sie sehen, ähnelt der Verarbeitungscode den Projekten, die wir in anderen Beiträgen untersucht haben. Im Grunde fügen wir hier nur eine neue Methode hinzu, übertragen(), um die Daten an den Server zu melden. übertragen()Die Aufgabe besteht darin, eine URL mit allen Informationen zu erstellen, die für unser PHP-Skript erforderlich sind. Beachten Sie, wie jeder Feldname in der Abfragezeichenfolge (face_count, Intervall und Raumname) sowohl im Processing- als auch im PHP-Skript konsistent verwendet wird:

Sobald wir diese URL haben, ist die Verarbeitung in Processing integriert loadStrings () Befehl führt das PHP-Skript auf unserem Server aus, um die Informationen zu speichern. Beachten Sie, dass uns die Ergebnisse in diesem Beispiel eigentlich egal sind. nur dass die Seite aufgerufen wird. Wenn wir jedoch anspruchsvoller werden wollten, könnte das PHP-Skript einen Statuscode oder andere Informationen zurückgeben.

Der letzte erwähnenswerte Punkt ist, wie wir die URLEncoder-Dienstprogrammklasse von Java verwendet haben, um jedes der Felder zu kodieren. Dadurch wird sichergestellt, dass die Daten korrekt an den Server übermittelt werden. Wieder einmal nutzen wir einige der mächtigen Goodies, die in Java verfügbar sind, um uns das Leben in der Verarbeitung zu erleichtern.

In der Schuppenhalle:


Erste Schritte mit Processing Lernen Sie die Computerprogrammierung auf einfache Weise mit Processing, einer einfachen Sprache, mit der Sie Code zum Erstellen von Zeichnungen, Animationen und interaktiven Grafiken verwenden können. Programmierkurse beginnen normalerweise mit der Theorie, aber in diesem Buch können Sie direkt in kreative und unterhaltsame Projekte einsteigen. Es ist ideal für alle, die grundlegende Programmierung erlernen möchten, und ist eine einfache Einführung in die Grafik für Personen mit Programmierkenntnissen.

Aktie

Leave A Comment