Sadržaj:

RoboPhoto - generator mozaika za javnost: 4 koraka
RoboPhoto - generator mozaika za javnost: 4 koraka

Video: RoboPhoto - generator mozaika za javnost: 4 koraka

Video: RoboPhoto - generator mozaika za javnost: 4 koraka
Video: Why the Monument to Communism in the Sky was ABANDONED 2024, Novembar
Anonim
Image
Image
RoboPhoto - generator mozaika za javnost
RoboPhoto - generator mozaika za javnost
RoboPhoto - generator mozaika za javnost
RoboPhoto - generator mozaika za javnost

RoboPhoto je generator fotomozaika u stvarnom vremenu

RoboPhoto stvara fotomozaik svojih korisnika - dok čekate.

Koristeći moderne digitalne tehnike poput obrade slika, prepoznavanja lica i umjetne inteligencije, RoboPhoto je sposoban stvoriti fotomozaik svih posjetitelja koji prolaze pored njega i pritisnu njegovo dugme-u stvarnom vremenu.

Svaki put kada pritisnete dugme, fotografiše se osoba koja vam je pri ruci. Svaku fotografiju trenutno skenira i interpretira RoboPhoto. Softver RoboPhoto će tada izmijeniti svu pojedinačnu sliku - tako da postane dio veće slike, a zatim će odštampati ovu izmijenjenu sliku na naljepnici označenoj sa skupom koordinata koje označavaju lokaciju svake fotografije unutar te veće slike. Zatim se od svakog posjetitelja traži da postavi vlastitu foto naljepnicu na veće platno koje sadrži samo odgovarajuću mrežu.

Tokom rada RoboPhoto -a bit će stvorena nova slika. Fotomozaik sastavljen od ovih pojedinačnih fotografija koji će oponašati unaprijed definiranu „sliku mete“.

RoboPhoto radi i u načinu rada za jednog korisnika. Kada je konfiguriran na ovaj način, RoboPhoto stvara cijeli mozaik jednog korisnika.

Supplies

  • PC sa operativnim sistemom Windows 10 sa instaliranim paketima Visual Studio i IoT
  • Raspberry Pi 3B+ sa instaliranim Microsoft Windows 10 IoT
  • Štampač etiketa u boji (Brother VC-500W)
  • Veliko crveno dugme postavljeno na postolje za korisnički unos
  • HDMI ekran za povratne informacije korisnika
  • Microsoft Xbox Kinect v2 kamera- ukradena od mog sina- za snimanje fotografija
  • Mreža (Wifi, LAN)
  • Ciljna mreža. List papira sa otisnutom mrežom ispunjen koordinatama. Ova mrežica od papira koristi se kao platno na koje posjetitelji mogu zalijepiti svoju fotografiju na određene koordinate. Tako će na kraju zajedno formirati krajnji rezultat: prekrasan novi fotomozaik.

Korištena je Microsoftova kamera Kinect 2.0 jer može snimati dubinske slike. Ova se funkcija koristi za stvaranje virtualnog zelenog zaslona na svakoj pojedinačnoj fotografiji. Na ovaj način RoboPhoto može prefarbati pozadinu na svakoj pojedinačnoj fotografiji kako bi odgovarala boji ciljnog komada unutar budućeg mozaika.

Korak 1: Kako funkcionira

Kako to funkcionira
Kako to funkcionira
Kako to funkcionira
Kako to funkcionira
Kako to funkcionira
Kako to funkcionira
Kako to funkcionira
Kako to funkcionira

RoboPhoto je instalacija koja sadrži postolje sa velikim crvenim dugmetom na sebi, računar sa pričvršćenim štampačem etiketa i mali IoT uređaj koji rukuje korisničkim interfejsom (ekran i dugme). U mom slučaju: RaspBerry 3B+.

  1. RoboPhoto radi na javno dostupnoj lokaciji i (nakon uključivanja) je samoupravljajući. Prilikom trčanja RoboPhoto potiče posjetitelje u prolazu da pritisnu veliko crveno dugme.
  2. Kad god se pritisne to veliko crveno dugme, RoboPhoto će fotografirati posjetitelja koji je upravo pritisnuo dugme kamerom Kinect.
  3. Tada će RoboPhoto koristiti napredne A. I. i vještine obrade slika za promjenu svake fotografije tako da odgovara komadu unutar budućeg mozaika. Da bi se to postiglo, RoboPhoto prefarbava pozadinu svake fotografije kako bi odgovarala boji ciljanog komada unutar unaprijed učitane slike. Nakon uređivanja, RoboPhoto ispisuje uređenu fotografiju na naljepnici zajedno sa skupom koordinata koje precizno ukazuju na lokaciju ove naljepnice unutar mozaika.

  4. Zatim se od korisnika traži da naljepnicu stavi na mozaik metu.
  5. Tako će se - nakon što je mnogo ljudi posjetilo - pojaviti novo umjetničko djelo. Da biste stvorili mozaik, trebat će vam puno pojedinačnih komada. Dobio sam pristojne rezultate s 600 komada

RoboPhoto može raditi i u načinu rada za jednog korisnika.

U ovoj konfiguraciji RoboPhoto stvara cijeli mozaik od više fotografija uređenih od jednog korisnika. Nakon pritiska na dugme, RoboPhoto će snimiti oko> 600 različitih fotografija korisnika, a zatim ih sve urediti i rasporediti tako da formiraju jedan novi mozaik, kreiran nakon unaprijed odabrane ciljne slike.

Korak 2: Sklapanje hardvera

Sklapanje hardvera
Sklapanje hardvera
Sklapanje hardvera
Sklapanje hardvera

Kao što je prikazano na gornjoj slici, Win 10 računar je povezan sa Kinect kamerom. Kinect mora biti povezan putem USB 3.0. U vrijeme kada sam stvarao RoboPhoto - nije bila dostupna Raspberry Pi sa USB 3.0.*

PC se takođe koristi za rukovanje štampanjem na priloženom štampaču etiketa. U mom slučaju Brother VC-500W. Prilično jeftin štampač boja u domaćinstvu. To je, međutim, vrlo sporo. Bolje upotrijebite profesionalnu ako možete.

Veliko crveno dugme je priključeno na Raspberry Pi 3B+. Samo 4 žice su spojene na GPIO. Ovo je jedino potrebno lemljenje potrebno u ovom uputstvu. Pi takođe pruža povratne informacije našim posetiocima putem 7 '' TFT ekrana preko HDMI-a.

Da bih to sredio, izgradio sam drveno postolje koje drži sve ove komponente.

Uz postolje, uz zid, postavljen je list papira koji sadrži rešetku meta i koordinate (A1/A2). Pošto je štampač etiketa koji sam koristio ima maksimalnu širinu naljepnice = 2,5 cm, svi kvadrati u ovoj mreži mjere 2, 5 cm x 2, 5 cm.

*Danas Raspberry Pi4 nudi USB3.0. Alse W10 se može pokrenuti na uređaju. Dakle, teoretski bi trebalo biti moguće stvoriti RoboPhoto v2.0 bez upotrebe računara. Možda će mi Covid '19 dati dovoljno vremena da uskoro objavim takav Instructable.

Korak 3: Pisanje koda

Pisanje koda
Pisanje koda
Pisanje koda
Pisanje koda

Kod

RoboPhoto je kreiran sa VisualStudio kao rješenje sa dva projekta:

  1. Aplikacija Windows Forms na računaru hostuje TCP server i upravlja Kinect unosom
  2. Raspberry Pi 3B+ koji ugošćuje TCP klijenta unutar aplikacije sa UWP-om (postavljena kao startup-aplikacija) za rukovanje događajima pritiska na dugme i pruža korisniku povratne informacije putem 7-inčnog TFT ekrana.

Na gornjem dijagramu pokušao sam vam dati ideju o tome šta radi moj softver. Visual Studio koji sam napisao za stvaranje ovog (apsolutno 100% ispravnog) RoboPhoto rješenja isporučuje se s ovim Instructable. Međutim, moram upozoriti sve koji preuzimaju ovu datoteku: Kod koji sam napisao nije nimalo lijep i često je vezan za moj dev-PC. Stoga ohrabrujem sve da stvore bolje, ljepše i postojanije rješenje.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Mreža

U primjeru koda, Pi -ov kod je raspoređen kroz Visual Studio na IP adresu u mojoj mreži. Vjerovatno biste trebali promijeniti ovo kako bi odgovarali vašem. Da biste to učinili - desnom tipkom miša kliknite projekt klijenta ARM nakon otvaranja rješenja u Visual Studiju, zatim odaberite svojstva i postavite vrijednost Udaljena mašina na IP adresu vašeg Pi. Takođe morate omogućiti saobraćaj koji ide od klijenta do servera na portu 8123 unutar Windows zaštitnog zida na serveru (računaru). Ako rješenje pokrećete iz Visual Studija, od vas bi se trebalo tražiti da to učinite za U.

Dok sam kodirao, imao sam mnogo problema da W32 i UWP pravilno komuniciraju. Uspio sam funkcionirati koristeći dvije odvojene klase u klijentu i poslužitelju: resp MyEchoClient.cs (u ARM klijentu) i ConnectionClient.cs (zadržavanje klijentskih veza na poslužitelju).

Mozaik datoteke - prilagođena klasa

RoboPhoto stvara mozaike koji oponašaju ciljnu sliku. Ova ciljna slika i sve pojedinačne fotografije koje zajedno čine budući mozaik, kao i neka druga svojstva svakog RoboPhoto-a pohranjene su u datotekama u datotečnom sistemu. Moj popraćeni kôd koristi skup datoteka i mapa u direktoriju c: / tmp / MosaicBuilder. Unutar ove mape kôd će čitati sve podmape s imenom mape koje počinje s [prj_] kao fascikle projekta mozaika. Unutar svih ovih [prj_] mapa pokušat će otvoriti projektnu datoteku pod nazivom [_projectdata.txt] koja sadrži sve informacije potrebne za svaki projekt.

Takav projektni fajl sastoji se od:

  1. puna putanja i naziv datoteke ciljne slike ovog projekta
  2. punu putanju na kojoj se čuvaju pojedinačne fotografije (dijelovi) ovog projekta
  3. Broj stupova koje će mozaik sadržavati
  4. Broj redova koje će mozaik sadržavati

Primjeri projekata navedeni su u zip datoteci: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

U kodu servera C#, sve rukovanje mozaikom vrši se putem prilagođene klase: BBMosaicProject.cs

Microsoft Kinect v2.0 - zeleni ekran

Bilo koja kamera može samo fotografirati. Ali koristio sam Microsoft Kinect v2.0 za kombiniranje slika u boji i dubinskih slika. Na ovaj način se može stvoriti efekat zelenog ekrana. Pozadina svih slika u boji primljenih od Kinect -a bit će zamijenjena ujednačenom zelenom površinom (BBBackgroundRemovalTool.cs).

Referenca na Microsoft. Kinect je dodana u serverproject.

EMGU

Budući da moramo biti sigurni da je osoba na fotografiji koja je snimljena pritiskom na dugme, u RoboPhoto su dodane mogućnosti prepoznavanja lica.

www.nuget.org/packages/Emgu. CV/3.4.3.3016

Tek kada se osoba nađe na slici, zeleni ekran na ovoj slici bit će zamijenjen jednoličnom površinom u boji, sa kodovima boja jednakim prosječnoj boji ciljnog komada na budućem mozaiku.

Korak 4: Hvala

Hvala ti
Hvala ti

Hvala vam što ste pročitali moj Instructable. Ovo mi je bio prvi. Nadam se da ste uživali.

Preporučuje se: