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, Studeni
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 pokraj njega i pritisnu gumb-u stvarnom vremenu.

Svaki put kad pritisnete gumb, fotografira se osoba koja vam je pri ruci. RoboPhoto trenutno skenira i tumači svaku fotografiju. Softver RoboPhoto tada će izmijeniti svu pojedinačnu sliku - tako da postane dio veće slike, a zatim će ovu promijenjenu sliku ispisati na naljepnicu označenu skupom koordinata koje označavaju mjesto svake fotografije unutar te veće slike. Zatim se od svakog posjetitelja traži da stavi svoju naljepnicu s fotografijama na veće platno koje sadrži samo odgovarajuću mrežu.

Tijekom rada RoboPhoto -a stvorit će se nova slika. Fotomozaik sastavljen od ovih pojedinačnih fotografija koji će oponašati unaprijed definiranu "sliku cilja".

RoboPhoto također radi u načinu rada za jednog korisnika. Kada je konfiguriran na ovaj način, RoboPhoto stvara potpuni mozaik od jednog korisnika.

Pribor

  • Računalo sa sustavom Windows 10 s instaliranim paketima Visual Studio i IoT
  • Raspberry Pi 3B+ s instaliranim Microsoft Windows 10 IoT
  • Pisač naljepnica u boji (Brother VC-500W)
  • Veliki crveni gumb postavljen na postolje za korisnički unos
  • HDMI zaslon za povratne informacije korisnika
  • Microsoft Xbox Kinect v2 kamera- ukradena od mog sina- za fotografiranje
  • Mreža (Wifi, LAN)
  • Ciljna mreža. List papira s otisnutom mrežom ispunjen koordinatama. Ova se papirnata rešetka koristi kao platno na koje posjetitelji mogu zalijepiti svoju fotografiju na određene koordinate. Tako će na kraju zajedno stvoriti krajnji rezultat: prekrasan novi fotomozaik.

Korištena je Microsoftova kamera Kinect 2.0 jer može snimati dubinske slike. Ova se značajka koristi za stvaranje virtualnog zelenog zaslona na svakoj pojedinačnoj fotografiji. Na taj 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 djeluje
Kako djeluje
Kako djeluje
Kako djeluje
Kako djeluje
Kako djeluje
Kako djeluje
Kako djeluje

RoboPhoto je instalacija koja sadrži postolje s velikim crvenim gumbom na sebi, računalo s pričvršćenim pisačem naljepnica i mali IoT uređaj koji rukuje korisničkim sučeljem (zaslon i gumb). U mom slučaju: RaspBerry 3B+.

  1. RoboPhoto djeluje na javno dostupnoj lokaciji i (nakon uključivanja) samostalno radi. Prilikom trčanja RoboPhoto potiče posjetitelje u prolazu da pritisnu veliko crveno dugme.
  2. Kad god se pritisne taj veliki crveni gumb, RoboPhoto će fotografirati posjetitelja koji je upravo pritisnuo gumb kamerom Kinect.
  3. Tada će RoboPhoto koristiti napredni 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 ponovno boji pozadinu svake fotografije kako bi odgovarala boji ciljanog komada unutar unaprijed učitane slike. Nakon uređivanja, RoboPhoto ispisuje uređenu fotografiju na naljepnicu zajedno sa skupom koordinata koje točno ukazuju na mjesto ove jedne naljepnice unutar mozaika.

  4. Zatim se od korisnika traži da naljepnicu stavi na mozaik metu.
  5. Tako će - nakon što je mnogo ljudi posjetilo - nastati novo umjetničko djelo. Za izradu mozaika trebat će vam puno pojedinačnih komada. Dobio sam pristojne rezultate pri pokretanju 600 komada

RoboPhoto također može raditi u načinu rada za jednog korisnika.

U ovoj konfiguraciji RoboPhoto stvara čitav mozaik od više fotografija uređenih od jednog korisnika. Nakon pritiska na gumb, RoboPhoto će snimiti oko> 600 različitih fotografija korisnika, a zatim ih sve urediti i rasporediti tako da tvore 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, računalo Win 10 spojeno je na Kinect kameru. Kinect mora biti spojen putem USB 3.0. U vrijeme kad sam stvarao RoboPhoto - nije bio dostupan Raspberry Pi s USB 3.0.*

Računalo se također koristi za rukovanje ispisom na pričvršćeni ispisnik naljepnica. U mom slučaju Brother VC-500W. Prilično jeftin tiskač etiketa u boji za kućanstvo. To je, međutim, vrlo jako sporo. Bolje upotrijebite profesionalnu ako možete.

Veliko crveno dugme priključeno je na Raspberry Pi 3B+. Na GPIO su spojene samo 4 žice. Ovo je jedino potrebno lemljenje potrebno u ovom Instructable -u. Pi također pruža povratne informacije našim posjetiteljima putem 7 '' TFT zaslona preko HDMI-a.

Kako bih to sredio, sagradio sam drveno postolje koje drži sve te komponente.

Uz postolje, uz zid, postavljen je list papira koji sadrži rešetku meta i koordinate (A1/A2). Budući da sam pisač naljepnica 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 može se pokrenuti na uređaju. Dakle, teoretski bi trebalo biti moguće stvoriti RoboPhoto v2.0 bez korištenja računala. 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

Kodirati

RoboPhoto je kreiran s VisualStudioom kao rješenje s dva projekta:

  1. Aplikacija Windows Forms na računalu ugošćuje TCP poslužitelj i upravlja Kinect unosom
  2. Raspberry Pi 3B+ koji ugošćuje TCP klijenta u aplikaciji na čelu s UWP-om (postavljenoj kao startup-aplikacija) za rukovanje događajima pritiska na gumb i pruža korisniku povratne informacije putem svog 7 '' TFT zaslona.

Na gornjem dijagramu pokušao sam vam dati predodžbu o tome što radi moj softver. Visual Studio koji sam napisao za stvaranje ovog (apsolutno 100% ispravnog) RoboPhoto rješenja isporučen je s ovim Instructable. Međutim, moram upozoriti sve koji preuzimaju ovu datoteku: Kôd koji sam napisao daleko je od lijepog i često je vezan za moj dev-PC. Stoga potičem sve na stvaranje boljeg, ljepšeg i postojanijeg rješenja.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Mreža

U primjeru koda, Pi -ov kod je raspoređen putem Visual Studija na IP adresu u mojoj mreži. Ovo biste vjerojatno trebali promijeniti tako da odgovara vašem. Da biste to učinili - desnom tipkom miša kliknite projekt klijenta ARM nakon otvaranja rješenja u Visual Studiju, a zatim odaberite svojstva i postavite vrijednost Udaljeni stroj na IP adresu vašeg Pi. Također morate omogućiti promet koji ide od klijenta do poslužitelja na portu 8123 unutar Windows zaštitnog zida na poslužitelju (računalu). Ako rješenje pokrećete iz Visual Studija, od vas bi se trebalo tražiti da to učinite za U.

Tijekom kodiranja imao sam mnogo problema s pravilnom komunikacijom W32 i UWP. Uspio sam funkcionirati pomoću 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 RoboPhotoa pohranjene su u datotekama u datotečnom sustavu. 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 mape projekta mozaika. Unutar svih ovih mapa [prj_] pokušat će otvoriti datoteku projekta pod nazivom [_projectdata.txt] koja sadrži sve podatke potrebne za svaki projekt.

Takav projektni fajl sastoji se od:

  1. puni put i naziv datoteke ciljne slike ovog projekta
  2. puni put na kojem se pohranjuju pojedinačne fotografije (dijelovi) ovog projekta
  3. Broj stupaca 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 poslužitelja C#, sve rukovanje mozaikom vrši se putem prilagođene klase: BBMosaicProject.cs

Microsoft Kinect v2.0 - zeleni zaslon

Bilo koja kamera može samo fotografirati. No, koristio sam Microsoft Kinect v2.0 za kombiniranje slika u boji i dubinskih slika. Na taj se način može stvoriti efekt zelenog zaslona. Pozadina svih slika u boji primljenih od Kinecta zamijenit će se jednolikom zelenom površinom (BBBackgroundRemovalTool.cs).

U poslužiteljski je projekt dodana referenca na Microsoft. Kinect.

EMGU

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

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

Tek kad se osoba nalazi na slici, zeleni zaslon na ovoj slici bit će zamijenjen jednoličnom površinom u boji, s kodovima boja jednakim prosječnoj boji ciljnog komada u budućem mozaiku.

Korak 4: Hvala

Hvala vam
Hvala vam

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

Preporučeni: