Kazalo:

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

Video: RoboPhoto - generator mozaika za javnost: 4 koraki

Video: RoboPhoto - generator mozaika za javnost: 4 koraki
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, November
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 v realnem času

RoboPhoto ustvari fotomozaik svojih uporabnikov - medtem ko čakate.

Z uporabo sodobnih digitalnih tehnik, kot so obdelava slik, prepoznavanje obrazov in umetna inteligenca, lahko RoboPhoto ustvari fotomozaik vseh obiskovalcev, ki hodijo mimo in pritisnejo gumb-v realnem času.

Vsakič, ko pritisnete gumb, se posname fotografija osebe, ki je pri roki. Vsako fotografijo RoboPhoto takoj skenira in interpretira. Programska oprema RoboPhoto bo nato spremenila vso posamezno sliko - tako da bo postala del večje slike, nato pa to spremenjeno sliko natisnila na nalepko z naborom koordinat, ki označujejo lokacijo vsake fotografije na tej večji sliki. Vsak obiskovalec nato pozove, naj na večje platno, ki vsebuje samo ustrezno mrežo, namesti svojo nalepko s fotografijami.

Med delovanjem RoboPhoto bo ustvarjena nova slika. Fotomozaik, sestavljen iz teh posameznih fotografij, ki bo posnemal vnaprej določeno "podobo cilja".

RoboPhoto deluje tudi v načinu za enega uporabnika. Ko je konfiguriran na ta način, RoboPhoto ustvari celoten mozaik enega uporabnika.

Zaloge

  • Računalnik z operacijskim sistemom Windows 10 z nameščenimi paketi Visual Studio in IoT
  • Raspberry Pi 3B+ z nameščenim sistemom Microsoft Windows 10 IoT
  • Tiskalnik barvnih etiket (Brother VC-500W)
  • Velik rdeč gumb, nameščen na podstavku za vnos uporabnika
  • Zaslon HDMI za povratne informacije uporabnikov
  • Kamera Microsoft Xbox Kinect v2- ukradena od mojega sina- za fotografiranje
  • Omrežje (Wifi, LAN)
  • Ciljna mreža. List papirja, na katerem je natisnjena mreža -napolnjena s koordinatami. Ta papirna mreža se uporablja kot platno, kjer lahko obiskovalci prilepijo svojo fotografijo na določene koordinate. Tako bodo na koncu skupaj oblikovali končni rezultat: čudovit nov fotomozaik.

Uporabljena je bila kamera Microsoft Kinect 2.0, ker lahko posname globinske posnetke. Ta funkcija se uporablja za ustvarjanje virtualnega zelenega zaslona na vsaki posamezni fotografiji. Na ta način lahko RoboPhoto prebarva ozadje na vsaki posamezni fotografiji, da se ujema z barvo ciljnega kosa v bodočem mozaiku.

1. korak: Kako deluje

Kako deluje
Kako deluje
Kako deluje
Kako deluje
Kako deluje
Kako deluje
Kako deluje
Kako deluje

RoboPhoto je namestitev, ki vsebuje podstavek z velikim rdečim gumbom, računalnik s pritrjenim tiskalnikom etiket in majhno napravo IoT, ki upravlja uporabniški vmesnik (zaslon in gumb). V mojem primeru: RaspBerry 3B+.

  1. RoboPhoto deluje na javno dostopni lokaciji in (po vklopu) deluje sam. RoboPhoto med tekom mimoidoče obiskovalce spodbudi, da pritisnejo na velik rdeči gumb.
  2. Kadar koli pritisnete ta veliki rdeči gumb, bo RoboPhoto posnel fotografijo obiskovalca, ki je pravkar pritisnil gumb s kamero Kinect.
  3. Nato bo RoboPhoto uporabil napredni AI. in spretnosti obdelave slik za spreminjanje vsake fotografije tako, da se ujema s kosom v bodočem mozaiku. Da bi to dosegli, RoboPhoto prebarva ozadje vsake fotografije tako, da se ujema z barvo ciljnega kosa znotraj vnaprej naložene slike. Po urejanju RoboPhoto natisne urejeno fotografijo na nalepko skupaj z nizom koordinat, ki natančno določijo lokacijo te nalepke v mozaiku.

  4. Nato se od uporabnika zahteva, da nalepko položi na ciljno listo mozaika.
  5. Tako se bo - po obisku številnih ljudi - pojavila nova umetnina. Če želite ustvariti mozaik, boste potrebovali veliko posameznih kosov, pri 600 kosih sem dosegel dobre rezultate

RoboPhoto lahko deluje tudi v načinu za enega uporabnika.

V tej konfiguraciji RoboPhoto ustvari celoten mozaik fotografij, ki so bile urejene od enega samega uporabnika. Po pritisku na gumb bo RoboPhoto posnel približno> 600 različnih fotografij uporabnika, nato pa jih vse uredil in razporedil v en sam nov mozaik, ustvarjen po vnaprej izbrani ciljni sliki.

2. korak: Sestavljanje strojne opreme

Sestavljanje strojne opreme
Sestavljanje strojne opreme
Sestavljanje strojne opreme
Sestavljanje strojne opreme

Kot je prikazano na zgornji sliki, je računalnik Win 10 povezan s kamero Kinect. Kinect mora biti priključen preko USB 3.0. Takrat, ko sem ustvarjal RoboPhoto - Raspberry Pi z USB 3.0 ni bil na voljo.*

Računalnik se uporablja tudi za tiskanje na priloženi tiskalnik nalepk. V mojem primeru Brother VC-500W. Dokaj poceni gospodinjski tiskalnik barvnih etiket. Je pa zelo zelo počasen. Če je mogoče, raje uporabite profesionalnega.

Veliki rdeči gumb je pritrjen na Raspberry Pi 3B+. Na GPIO so priključene samo 4 žice. To je edino potrebno spajkanje v tem navodilu. Pi ponuja tudi povratne informacije našemu obiskovalcu s 7-palčnim zaslonom TFT prek HDMI.

Za pospravljanje sem zgradil lesen podstavek, ki drži vse te sestavne dele.

Poleg podstavka, ob steni, je postavljen list papirja, ki vsebuje mrežno tarčo in koordinate (A1/A2). Ker sem tiskalnik etiket uporabil največ z širino nalepke = 2,5 cm, vsi kvadrati v tej mreži merijo 2, 5 cm x 2, 5 cm.

*Danes Raspberry Pi4 ponuja USB3.0. Alse W10 lahko zaženete na napravi. Teoretično bi torej moralo biti mogoče ustvariti RoboPhoto v2.0 brez uporabe osebnega računalnika. Morda mi bo Covid '19 sam zagotovil dovolj časa, da kmalu objavim tako navodilo.

3. korak: Pisanje kode

Pisanje kodeksa
Pisanje kodeksa
Pisanje kodeksa
Pisanje kodeksa

Koda

RoboPhoto je bil ustvarjen z VisualStudio kot rešitev za dva projekta:

  1. Aplikacija Windows Forms v računalniku gosti strežnik TCP in upravlja vnos Kinect
  2. Raspberry Pi 3B+, ki gosti odjemalca TCP v aplikaciji, ki jo vodi UWP (nastavljena kot zagonska aplikacija), ki upravlja dogodke pritiska na gumb in uporabniku posreduje povratne informacije na svojem 7-palčnem zaslonu TFT.

V zgornjem diagramu sem vam poskušal predstaviti, kaj počne moj soft. Visual Studio, ki sem ga napisal za ustvarjanje te (popolnoma 100% delujoče) rešitve RoboPhoto, je priložen temu navodilu. Vseeno moram opozoriti vse, ki prenesejo to datoteko: Koda, ki sem jo napisal, še zdaleč ni lepa in pogosto povezana z mojim računalnikom za razvijalce. Zato vse spodbujam, da ustvarijo boljšo, lepšo in trdnejšo rešitev.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Omrežje

V vzorčni kodi je koda Pi razmeščena prek Visual Studia na naslov IP v mojem omrežju. Verjetno bi morali to spremeniti tako, da ustreza vašim. Če želite to narediti, z desno miškino tipko kliknite odjemalski projekt ARM, potem ko odprete rešitev v Visual Studiu, nato izberite lastnosti in vrednost Oddaljeni stroj shranite na naslov IP vašega Pi. Prav tako morate dovoliti promet, ki poteka od odjemalca do strežnika na vratih 8123 v požarnem zidu Windows na strežniku (računalniku). Če zaženete rešitev iz programa Visual Studio, vas mora prositi, da to storite za U.

Med kodiranjem sem imel veliko težav pri pravilni komunikaciji W32 in UWP. Uspelo mi je z uporabo dveh ločenih razredov v odjemalcu in strežniku: resp MyEchoClient.cs (v odjemalcu ARM) in ConnectionClient.cs (zadrževanje odjemalskih povezav v strežniku).

Mozaične datoteke - razred po meri

RoboPhoto ustvarja mozaike, ki posnemajo ciljno sliko. Ta ciljna slika in vse posamezne fotografije, ki skupaj sestavljajo bodoči mozaik, ter nekatere druge lastnosti vsakega RoboPhoto so shranjene v datotekah v datotečnem sistemu. Moja spremljana koda uporablja niz datotek in map v imeniku c: / tmp / MosaicBuilder. V tej mapi bo koda prebrala vse podmape z imenom mape, ki se začne z [prj_] kot mape projekta mozaika. V vseh teh mapah [prj_] bo poskušal odpreti datoteko projekta z imenom [_projectdata.txt], ki vsebuje vse potrebne informacije za vsak projekt.

Ta projektna datoteka je sestavljena iz:

  1. celotno pot in ime datoteke ciljne slike tega projekta
  2. celotno pot, kjer so shranjene posamezne fotografije (kosi) tega projekta
  3. Število stolpcev, ki jih bo mozaik vseboval
  4. Število vrstic, ki jih bo mozaik vseboval

Primeri projektov so na voljo v datoteki zip: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

V kodi strežnika C# se vse ravnanje z mozaiki izvaja prek razreda po meri: BBMosaicProject.cs

Microsoft Kinect v2.0 - zeleni zaslon

Vsaka kamera naredi samo fotografiranje. Vendar sem uporabil Microsoft Kinect v2.0 za združevanje barvnih in globinskih slik. Na ta način lahko ustvarite učinek zelenega zaslona. Ozadje v vseh barvnih slikah, ki jih prejme Kinect, bo nadomeščeno z enakomerno zeleno površino (BBBackgroundRemovalTool.cs).

V strežniški projekt je bil dodan sklic na Microsoft. Kinect.

EMGU

Ker moramo biti prepričani, da je oseba na fotografiji, ki je bila posneta ob pritisku gumba, smo RoboPhoto dodali zmožnosti prepoznavanja obrazov.

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

Šele ko je oseba na sliki, bo zeleni zaslon na tej sliki nadomeščen z enotno barvno površino z barvnimi oznakami, ki so enake povprečni barvi tarče v bodočem mozaiku.

4. korak: Hvala

Hvala vam
Hvala vam

Hvala, ker ste prebrali moj Instructable. To je bil moj prvi. Upam, da ste uživali.

Priporočena: