Denne kodekasse undersøger, hvordan du bruger en webserver til at indsamle sensordata fra en behandlingsskitse. Som et eksempel bruger vi OpenCV til periodisk at registrere og rapportere antallet af ansigter, der vises i dit webkameras synsfelt. Du kan bruge noget som dette på en konference eller kunstudstilling for at se, hvor mange mennesker der er interesserede i en bestemt session eller udstilling. Ved hjælp af dette datafeed, kan du oprette en mobilapp, der viser dig, hvor de fleste mennesker er på en konference på et givent tidspunkt.
Opsæt webserveren
Du skal have adgang til en webserver med PHP for at gøre dette projekt. (PHP er et skriptsprog for at oprette websteder, der tilbydes af næsten alle hostingfirmaer.) Hvis du ikke har en konto hos et hostingfirma, kan du simpelthen oprette en webserver på din egen maskine. Faktisk kommer de fleste nye Mac'er med Apache, en af de mest populære webservere, forudinstalleret. Alt du skal gøre er at aktivere det, som du kan gøre via computerens "System Preferences" panel. Du skal bare åbne præferencerne, klikke på "Deling" og derefter tjekke "Webdeling" fra listen til venstre. (Hvis du er på Windows, skal du installere en ekstern server. Jeg har haft stor succes med XAMPP, som har alt du skal bruge.)
Hvis alt går godt, vil du se statusindikatoren "Web Sharing: On" lyser grønt. Du kan også se den adresse, du kan bruge i din browser for at få adgang til "rod" på dit websted. (Skriv en note af denne adresse, da vi senere har brug for den i Processing sketch.) Nedenstående figur viser dig flere detaljer:
Når deling er aktiveret, er du klar til at konfigurere PHP-scriptet, der logger dataene. Dette gøres ved at tilføje et par filer i webserverens rodmappe. På en Mac er dette normalt "Sites" -mappen, som ligger på samme sted som dine musik-, film- og dokumentsmapper.
For at starte opsætningen af scriptet, slip ind i en terminal og skriv disse kommandoer:
I denne rækkefølge af kommandoer skifter vi til "rod" biblioteket, hvor Macs webserver forventer at finde filer, opretter en ny mappe kaldet "face_sensor" og derefter tilføjer en blank logfil, som vores PHP script kan skrive til. Dette sidste trin sker i to dele: den første er brugen af røre ved kommandoen for at oprette en ny, tom logfil. Det andet trin er at bruge chmod kommandoen for at indstille tilladelserne på filen, så PHP kan skrive data til filen.cd ~ / Sites / mkdir face_sensor cd face_sensor touch sensor_log.txt chmod 777 sensor_log.txt
Dernæst skal du konfigurere dit system, så serveren kan udføre PHP-scripts. SerpicoLugNut on Stackoverflow har en god beskrivelse af hvordan man gør dette på den nemmeste måde at aktivere PHP og MySQL på Mac OS 10.6 (Snow Leopard) ?. Her er hvad han siger at gøre:
Åbn en god tekst editor (jeg vil anbefale TextMate, men den gratis TextWrangler eller vi eller nano vil også gøre), og åbne: /etc/apache2/httpd.conf Find linjen: "#LoadModule php5_module libexec / apache2 / libphp5. så "Og uncomment det (fjern #).
Når mappen er klar, skal du gemme følgende PHP til en fil, der hedder record.php:
Når du har kopieret filen, skal du gå til din browser og indtaste følgende URL:
http: //Din personlige hjemmesideadresse fra delingspanelet/face_sensor/record.php?face_count=5&room_name=ballroom&interval=2000
Din browser skal sige "OK". Hvis du åbner sensor_log.txt fil, skal du se en linje, der ser sådan ud:
01-12-2010 06:01:41 EST balsal 5 2000
Så hvad sker der? Grundlæggende er PHP-scriptet simpelthen ved at udtrække de værdier, vi lægger i webadressens forespørgselsstreng (fx face_count, room_name og interval) og skrive dem ud til en faneafgrænset fil. Det er det. (Nå, ok, det tilføjer også dato og klokkeslæt.)
I et "rigtigt" system vil du højst sandsynligt skrive disse værdier til en database, men det ligger uden for rammerne for denne post. Hvad der primært vil gøre, er at vise dig, hvordan du bruger Behandling til at sende data til et websted, ikke oplysninger om, hvordan denne hjemmeside registrerer dataene. Hvis du er interesseret i at gå længere på den bageste ende, Kevin Yanks artikel Build Your Own Database Driven Website Brug PHP & MySQL, Del 1: Installation er et godt sted at starte.
Opsæt skissen
Nu hvor webserveren er oprettet og er i stand til at logge data, er det næste trin at opbygge Processing sketchen, der registrerer ansigter og rapporterer dem tilbage til din server. Før du starter, skal du sørge for at installere ControlP5 og OPENCV Processing eksterne biblioteker. (Hvis du ikke er bekendt med eksterne biblioteker, skal du se, hvordan du importerer biblioteker i behandling på O'Reilly svar.) Når bibliotekerne er installeret, skal du slukke for at behandle og indsætte koden for networked_face_sensor.pde i skitse vinduet:
Derudover skal du ændre transmission_url at indstille den til adressen på dit PHP script. Linjen
String transmission_url = "http: //MacOdewahn.home/~odewahn/face_sensor/record.php";
skal opdateres til
String transmission_url = "http: //Din personlige hjemmesideadresse fra delingspanelet/face_sensor/record.php ";
Når du starter skitsen, vil du bemærke, at du først skal vælge den kildevideo, du vil bruge, hvilket sker med kommandoen cam.settings ();. Dette giver dig mulighed for at tilslutte et eksternt webkamera, i stedet for at bruge det indbyggede webcam. Når du har valgt kilden, skal du se video feed.
Ansigtsdetektering og rapporteringsproces sker hvert andet sekund som angivet i interval variabel. Du kan også indtaste et "rumnavn", så du kan skelne mellem de mange datakilder. For eksempel kan du have et kamera kørende i din stue og et i dit køkken med både rapportering tilbage til den samme centrale server.
Efter et par sekunder eller så kan du åbne loggen i din webbrowser og se de data, som dine sensorer har rapporteret. URL'en for dette er:
http: //Din personlige hjemmesideadresse fra delingspanelet/face_sensor/sensor_log.txt
Det vil se sådan ud:
Diskussion
Som du kan se, behandlingskoden ligner meget de projekter, vi har udforsket i andre indlæg. Dybest set er alt, hvad vi laver her, tilføjet en ny metode, kaldet sende (), at rapportere dataene tilbage til serveren. sende ()S job er at oprette en URL med alle de oplysninger, der kræves af vores PHP script. Bemærk hvordan hvert feltnavn i forespørgselsstrengen - face_count, interval og room_name - konsekvent anvendes i både Processing og PHP scriptet:
Når vi har denne URL, er Processing indbygget loadStrings () kommandoen udfører PHP-scriptet på vores server for at gemme oplysningerne. Bemærk, at vi ikke rent faktisk bekymrer os om resultaterne i dette eksempel; kun at siden hedder. Men hvis vi ønskede at blive mere sofistikeret, kunne vi få PHP-scriptet til at returnere en statuskode eller nogle andre oplysninger.
Det sidste punkt værd at bemærke er, hvordan vi har brugt Java's URLEncoder-hjælpeklasse til at kode for hvert af felterne. Dette sikrer, at dataene overføres korrekt til serveren. Endnu engang benytter vi nogle af de magtfulde godbidder, der er tilgængelige i Java, for at gøre vores liv i Processing meget lettere!
I Maker Shed:
Kom godt i gang med behandling Lær computerprogrammering på nem måde med Processing, et simpelt sprog, der giver dig mulighed for at bruge kode til at tegne tegninger, animationer og interaktiv grafik. Programmeringskurser starter normalt med teori, men i denne bog kan du springe lige ind i kreative og sjove projekter. Det er ideelt for alle, der ønsker at lære grundlæggende programmering, og tjener som en simpel introduktion til grafik til personer med nogle programmeringsevner.