Jeffrey Cross
Jeffrey Cross

Izdelajte omrežni senzor obraza z obdelavo

Ta kodeks raziskuje, kako uporabiti spletni strežnik za zbiranje podatkov senzorjev iz skice za obdelavo. Primer: OpenCV bomo uporabljali za občasno zaznavanje in poročanje o številu obrazov, ki so prikazani v vidnem polju vaše spletne kamere. Lahko uporabite nekaj takega na konferenci ali umetniški razstavi, da vidite, koliko ljudi se zanima za določeno sejo ali razstavo. Z uporabo tega podatkovnega vira lahko ustvarite mobilno aplikacijo, ki vam bo pokazala, kje je večina ljudi na konferenci v danem trenutku.

Nastavite spletni strežnik

Za ta projekt boste potrebovali dostop do spletnega strežnika s PHP. (PHP je skriptni jezik za ustvarjanje spletnih strani, ki ga ponuja skoraj vsako gostiteljsko podjetje.) Če nimate računa v gostujočem podjetju, lahko preprosto nastavite spletni strežnik na svojem računalniku. Pravzaprav je večina novih Macov opremljenih z Apache, ki je eden izmed najbolj priljubljenih spletnih strežnikov, ki je že nameščen. Vse, kar morate storiti, je, da ga aktivirate, kar lahko storite preko plošče »Sistemske nastavitve« v računalniku. Odprite nastavitve, kliknite »Sharing« in nato na seznamu na levi preverite »Spletno skupno rabo«. (Če ste v sistemu Windows, morate namestiti zunanji strežnik. Z XAMPP-om, ki ima vse, kar potrebujete, sem imel velik uspeh.)

Če bo vse dobro, bo prikazal indikator stanja »Spletna objava: vključen« zeleno. Videli boste tudi naslov, ki ga lahko uporabite v brskalniku za dostop do »korenskega« spletnega mesta. (Zapišite si ta naslov, ker ga bomo pozneje potrebovali v skici za obdelavo.) Naslednja slika prikazuje več podrobnosti:

Ko omogočite skupno rabo, ste pripravljeni nastaviti PHP-skript, ki bo beležil podatke. To naredite tako, da v korenski imenik spletnega strežnika dodate nekaj datotek. Na računalniku Mac je to običajno imenik »Spletna mesta«, ki je na istem mestu kot imeniki za glasbo, filmi in dokumenti.

Za začetek nastavitve skripta, spustite v terminal in vnesite te ukaze:

cd ~ / spletna mesta / mkdir face_sensor cd face_sensor dotik sensor_log.txt chmod 777 sensor_log.txt

V tem zaporedju ukazov spreminjamo v »korenski« imenik, v katerem spletni strežnik Mac-ja pričakuje, da bo našel datoteke, ustvaril nov imenik »face_sensor« in nato dodal prazno datoteko dnevnika, v katero lahko naš PHP skript piše. Ta zadnji korak poteka v dveh delih: prvi je uporaba dotik ukaz, da ustvarite novo, prazno datoteko dnevnika. Drugi korak je uporaba chmod ukaz za nastavitev dovoljenj za datoteko, tako da lahko PHP zapisuje podatke v datoteko.

Nato morate konfigurirati sistem, tako da lahko strežnik izvaja PHP skripte. SerpicoLugNut na Stackoverflow ima odličen opis, kako to narediti na najlažji način za aktiviranje PHP in MySQL na Mac OS 10.6 (Snow Leopard) ?. Evo, kar pravi:

Odprite dober urejevalnik besedila (priporočam TextMate, toda prosti TextWrangler ali vi ali nano), in odprite: /etc/apache2/httpd.conf Poiščite vrstico: "#LoadModule php5_module libexec / apache2 / libphp5. Torej "in jo razčlenite (odstranite #).

Ko je imenik pripravljen, shranite naslednji PHP v datoteko, imenovano record.php:

Ko kopirate datoteko, pojdite v brskalnik in vnesite naslednji URL:

http: //vaš osebni naslov spletnega mesta iz plošče za skupno rabo/face_sensor/record.php?face_count=5&room_name=ballroom&interval=2000

Vaš brskalnik mora izgovoriti »OK«. Če odprete sensor_log.txt Datoteka, morate videti vrstico, ki izgleda takole:

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

Torej, kaj se dogaja? PHP skript preprosto izvleče vrednosti, ki smo jih vnesli v niz poizvedb URL-ja (npr. Face_count, room_name in interval) in jih zapiše v datoteko, ločeno s tabulatorji. To je to. (No, prav tako, doda tudi datum in čas.)

V "resničnem" sistemu bi te vrednosti najverjetneje zapisali v bazo podatkov, vendar je to izven obsega te objave - kar želimo predvsem prikazati, kako uporabiti obdelavo za pošiljanje podatkov na spletno mesto, ne pa podrobnosti o tem, kako ta spletna stran beleži podatke. Če vas zanima nadaljevanje z zadnjim delom, bo v članku Kevina Yanka zgraditi svojo spletno stran, ki temelji na podatkovni zbirki z uporabo PHP in MySQL, 1. del: Namestitev je dober začetek.

Nastavite skico

Zdaj, ko je spletni strežnik nastavljen in lahko beleži podatke, je naslednji korak izdelava skice za obdelavo, ki zazna obraze in jih sporoči nazaj v strežnik. Preden začnete, preverite, ali ste namestili controlP5 in zunanje knjižnice OPENCV Processing. (Če niste seznanjeni z zunanjimi knjižnicami, si oglejte Kako uvoziti knjižnice v obdelavo pri odgovorih O'Reilly.) Ko so knjižnice nameščene, poženite Obdelava in prilepite kodo za omrežno_delavo_sensor.pde v okno skice:

Poleg tega boste morali spremeniti transmission_url , da ga nastavite na naslov PHP skripta. Linija

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

mora biti posodobljeno

Niz transmission_url = "http: //vaš osebni naslov spletnega mesta iz plošče za skupno rabo/face_sensor/record.php ";

Ko zaženete skico, boste opazili, da morate najprej izbrati izvorni videoposnetek, ki ga želite uporabiti, kar se izvede z ukazom cam.settings ();. To vam omogoča, da povežete zunanjo spletno kamero, namesto da uporabite samo vgrajeno spletno kamero. Ko izberete vir, morate videti vir videoposnetka.

Postopek zaznavanja in poročanja o obrazu poteka vsake 2 sekundi, kot je določeno v interval spremenljivko. Vnesete lahko tudi »ime sobe«, tako da lahko ločite več podatkovnih virov. Na primer, lahko imate v vaši dnevni sobi eno kamero in eno v vaši kuhinji, pri čemer sta obe poročali nazaj na isti osrednji strežnik.

Po nekaj sekundah lahko odprete dnevnik v spletnem brskalniku in si ogledate podatke, ki so jih sporočili senzorji. URL za to je:

http: //vaš osebni naslov spletnega mesta iz plošče za skupno rabo/face_sensor/sensor_log.txt

Izgleda nekako takole:

Diskusija

Kot lahko vidite, je koda za obdelavo zelo podobna projektom, ki smo jih raziskali v drugih objavah. V bistvu vse, kar tukaj delamo, je dodajanje nove metode, ki se kliče pošlji (), če želite podatke vrniti v strežnik. pošlji ()Naloga je ustvariti URL z vsemi informacijami, ki jih zahteva PHP skript. Upoštevajte, kako se vsako ime polja v nizu poizvedbe - face_count, interval in name_name - dosledno uporablja v skriptu Processing in PHP:

Ko imamo ta URL, bo obdelava vgrajena loadStrings () ukaz izvaja strežnik PHP za shranjevanje podatkov. Upoštevajte, da rezultatov v tem primeru dejansko ne skrbimo; samo, da se kliče stran. Če pa bi želeli postati bolj prefinjeni, bi lahko PHP skript vrnil statusno kodo ali kakšne druge informacije.

Končna točka, ki jo je treba omeniti, je, kako smo uporabili Java URLEncoder pomožni razred za kodiranje vsakega polja. To zagotavlja, da so podatki pravilno posredovani strežniku. Še enkrat izkoristimo prednosti nekaterih močnih pripomočkov, ki so na voljo v Javi, da bo naše življenje v obdelavi veliko lažje!

V skladišču izdelovalca:


Uvod v obdelavo Naučite se računalniškega programiranja na preprost način z Obdelovanjem, preprostim jezikom, ki vam omogoča uporabo kode za ustvarjanje risb, animacij in interaktivne grafike. Programski tečaji se običajno začnejo s teorijo, toda ta knjiga vam omogoča, da skočite naravnost v kreativne in zabavne projekte. Idealen je za vsakogar, ki se želi naučiti osnovnega programiranja in služi kot preprost uvod v grafiko za ljudi z nekaj programerskimi veščinami.

Delež

Pustite Komentar