Sisukord:

RoboPhoto - üldsusele mõeldud mosaiigigeneraator: 4 sammu
RoboPhoto - üldsusele mõeldud mosaiigigeneraator: 4 sammu

Video: RoboPhoto - üldsusele mõeldud mosaiigigeneraator: 4 sammu

Video: RoboPhoto - üldsusele mõeldud mosaiigigeneraator: 4 sammu
Video: CS50 2015 - Week 7 2024, Juuli
Anonim
Image
Image
RoboPhoto - üldsusele mõeldud mosaiigigeneraator
RoboPhoto - üldsusele mõeldud mosaiigigeneraator
RoboPhoto - üldsusele mõeldud mosaiigigeneraator
RoboPhoto - üldsusele mõeldud mosaiigigeneraator

RoboPhoto on reaalajas fotomooside generaator

RoboPhoto loob kasutajatest fotomosaici - kuni ootate.

Kasutades kaasaegseid digitaalseid tehnikaid, nagu pilditöötlus, näotuvastus ja tehisintellekt, on RoboPhoto võimeline looma fotomosaici kõigist külastajatest, kes kõnnivad mööda ja vajutavad selle nuppu-reaalajas.

Iga kord, kui nuppu vajutatakse, tehakse käepärast isikust foto. RoboPhoto skaneerib ja tõlgendab koheselt iga foto. RoboPhoto tarkvara muudab seejärel kogu üksikut pilti, nii et sellest saab osa suuremast pildist, ja prindib selle muudetud pildi kleebisele, millel on koordinaatide komplekt, mis näitab iga foto asukohta sellel suuremal pildil. Seejärel palutakse igal külastajal panna oma fotokleebis suuremale lõuendile, mis sisaldab ainult vastavat ruudustikku.

RoboPhoto töötamise ajal luuakse uus pilt. Fotomoosik, mis koosneb nendest üksikutest fotodest ja mis jäljendab eelnevalt määratletud sihtmärki.

RoboPhoto töötab ka ühe kasutaja režiimis. Sel viisil konfigureerides loob RoboPhoto ühe kasutaja täieliku mosaiigi.

Tarvikud

  • Windows 10 arvuti, kuhu on installitud Visual Studio ja IoT paketid
  • Raspberry Pi 3B+, millele on installitud Microsoft Windows 10 IoT
  • Värviline etiketiprinter (Brother VC-500W)
  • Suur punane nupp, mis on paigaldatud pjedestaalile kasutaja sisestamiseks
  • HDMI-ekraan kasutaja tagasiside saamiseks
  • Microsofti Xbox Kinect v2 kaamera- varastati minu pojalt- pildistamiseks
  • Võrk (Wifi, LAN)
  • Sihtvõrk. Paberileht, millele on trükitud ruudustik -täidetud koordinaatidega. Seda paberivõrku kasutatakse lõuendina, kuhu külastajad saavad kleepida oma foto määratud koordinaatidele. Ja nii moodustavad nad lõpuks koos lõpptulemuse: uue ilusa fotomosaici.

Kasutati icrosoft Kinect 2.0 kaamerat, kuna see suudab pildistada sügavust. Seda funktsiooni kasutatakse igale pildistajale virtuaalse rohelise ekraani loomiseks. Nii saab RoboPhoto iga üksiku foto tausta uuesti värvida, et see vastaks tulevase mosaiigi sihtmärgi värvile.

Samm: kuidas see toimib

Kuidas see toimib
Kuidas see toimib
Kuidas see toimib
Kuidas see toimib
Kuidas see toimib
Kuidas see toimib
Kuidas see toimib
Kuidas see toimib

RoboPhoto on installatsioon, mis sisaldab pjedestaali, millel on suur punane nupp, arvutit, millele on kinnitatud etiketiprinter, ja väikest IoT -seadet, mis haldab kasutajaliidest (ekraan ja nupp). Minu puhul: RaspBerry 3B+.

  1. RoboPhoto töötab avalikult ligipääsetavas kohas ja töötab (pärast selle sisselülitamist) ise. Jooksmisel julgustab RoboPhoto mööduvaid külastajaid vajutama selle suurt punast nuppu.
  2. Iga kord, kui seda suurt punast nuppu vajutatakse, teeb RoboPhoto pildi külastajast, kes just vajutas nuppu Kinect kaameraga.
  3. Seejärel kasutab RoboPhoto oma täiustatud A. I. ja pilditöötlusoskusi, et muuta iga foto sobivaks tulevase mosaiigi tükiks. Selle saavutamiseks värvib RoboPhoto iga foto tausta ümber, et see vastaks eellaaditud pildi sihtmärgi värvile. Pärast redigeerimist prindib RoboPhoto redigeeritud foto kleebisele koos koordinaatide komplektiga, mis määrab selle ühe kleebise asukoha mosaiigis.

  4. Seejärel palutakse kasutajal kleebis mosaiigi sihtlehele asetada.
  5. Ja nii - pärast paljude inimeste külastamist - ilmub uus kunstiteos. Mosaiigi loomiseks vajate palju üksikuid tükke. Sain korralikud tulemused, mis jooksid 600 tükki

RoboPhoto saab töötada ka ühe kasutaja režiimis.

Selles konfiguratsioonis loob RoboPhoto ühe mosaiigi ühest kasutajast tehtud redigeeritud fotodest. Pärast nupule vajutamist teeb RoboPhoto kasutajast umbes> 600 erinevat fotot ning seejärel redigeerib ja korraldab need kõik, et moodustada üks uus mosaiik, mis on loodud pärast eelnevalt valitud sihtpilti.

Samm: riistvara kokkupanek

Riistvara kokkupanek
Riistvara kokkupanek
Riistvara kokkupanek
Riistvara kokkupanek

Nagu ülaltoodud pildil näidatud, on Win 10 arvuti ühendatud Kinecti kaameraga. Kinect peab olema ühendatud USB 3.0 kaudu. RoboPhoto loomise ajal - Raspberry Pi koos USB 3.0 -ga polnud saadaval.*

Arvutit kasutatakse ka lisatud etiketiprinteri printimiseks. Minu puhul Brother VC-500W. Üsna odav majapidamises kasutatav värvipaber. See on aga väga väga aeglane. Kasutage parem professionaalset, kui saate.

Suur punane nupp on kinnitatud Raspberry Pi 3B+külge. GPIO külge on ühendatud ainult 4 juhet. See on ainus selles juhendis vajalik jootmine. Pi pakub meie külastajale tagasisidet ka 7-tollise TFT-ekraani kaudu HDMI kaudu.

Selle korrastamiseks ehitasin puidust pjedestaali, mis hoiab kõiki neid komponente.

Pjedestaali kõrvale, vastu seina, asetatakse paberileht, mis sisaldab sihtvõrku ja koordinaate (A1/A2). Kuna etiketiprinter, mida ma kasutasin, on maksimaalselt etiketi laius = 2, 5 cm, on selle ruudustiku kõigi ruutude suurus 2, 5 cm x 2, 5 cm.

*Täna pakub Raspberry Pi4 USB3.0. Alse W10 saab seadmes käivitada. Seega peaks teoreetiliselt olema võimalik luua RoboPhoto v2.0 ilma arvutit kasutamata. Võib -olla annab Covid '19 mulle piisavalt aega iseseisvalt sellise Instructable'i avaldamiseks.

Samm: koodi kirjutamine

Koodeksi kirjutamine
Koodeksi kirjutamine
Koodeksi kirjutamine
Koodeksi kirjutamine

Kood

RoboPhoto loodi koos VisualStudioga kahe projekti lahendusena:

  1. Windowsi vormide rakendus arvutis majutab TCP -serverit ja haldab Kinecti sisendit
  2. Raspberry Pi 3B+ majutab TCP-klienti UWP-juhises (seatud käivitusrakenduseks), et hallata nupuvajutusega seotud sündmusi ja anda kasutajale tagasisidet oma 7-tollise TFT-ekraani kaudu.

Ülaltoodud skeemil olen püüdnud anda teile aimu, mida mu pehme teeb. Visual Studio, mille kirjutasin selle (absoluutselt 100% töötava) RoboPhoto lahenduse loomiseks, on selle juhendiga kaasas. Siiski pean hoiatama kõiki selle faili allalaadimisi: minu kirjutatud kood pole kaugeltki ilus ja sageli seotud minu dev-PC-ga. Seega julgustan kõiki looma paremat, kenamat ja stabiilsemat lahendust.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Võrk

Näitekoodis on Pi kood Visual Studio kaudu minu võrgu IPAdressi kaudu juurutatud. Tõenäoliselt peaksite selle muutma omale sobivaks. Selleks paremklõpsake pärast lahenduse Visual Studio avamist ARM -kliendiprojektil, seejärel valige atribuudid ja teisaldage väärtus Remote machine oma PI -aadressile. Samuti peate lubama serveri (arvuti) Windowsi tulemüüri pordil 8123 liikluse, mis liigub kliendilt serverile. Kui käivitate lahenduse Visual Studio'ist, peaks see paluma teil seda U jaoks teha.

Kodeerimise ajal on mul olnud palju probleeme, et W32 ja UWP korralikult suhelda. Sain selle tööle, kasutades kahte eraldi klassi kliendis ja serveris: resp MyEchoClient.cs (ARM -kliendis) ja ConnectionClient.cs (kliendiühenduste ühendamine serveris).

Mosaiikfailid - kohandatud klass

RoboPhoto loob mosaiike sihtpildi jäljendamiseks. See sihtpilt ja kõik üksikud fotod, mis koos moodustavad tulevase mosaiigi, samuti mõned muud RoboPhoto omadused on salvestatud failisüsteemi failidesse. Minu kaasasolev kood kasutab kataloogis c: / tmp / MosaicBuilder failide ja kaustade komplekti. Selles kaustas loeb kood mosaiikprojektide kaustadena kõiki alamkaustu, mille kaustajanimi algab [prj_]. Kõigis neis [prj_] kaustades proovib see avada projektifaili nimega [_projectdata.txt], mis sisaldab kogu teavet, mis on iga projekti jaoks vajalik.

Selline projektifail koosneb:

  1. selle projekti sihtpildi täielik tee ja failinimi
  2. kogu tee, kuhu selle projekti üksikud fotod (tükid) salvestatakse
  3. Mosaiigi veergude arv
  4. Mosaiigi ridade arv

Näidisprojektid on pakitud ZIP -faili: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

C# serveri koodis toimub kogu mosaiikide käsitlemine kohandatud klassi kaudu: BBMosaicProject.cs

Microsoft Kinect v2.0 - Greenscreen

Lihtsalt fotode tegemiseks sobib iga kaamera. Kuid ma olen kasutanud Microsoft Kinect v2.0, et kombineerida värvilisi pilte ja sügavust. Nii saab luua rohelise ekraani efekti. Kõigi Kinectilt saadud värvipiltide taust asendatakse ühtlase rohelise pinnaga (BBBackgroundRemovalTool.cs).

Serveriprojektile lisati viide Microsoft. Kinectile.

EMGU

Kuna peame olema kindlad, et nupu vajutamisel tehtud fotol on inimene, lisati RoboPhotole näotuvastuse võimalused.

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

Alles siis, kui inimene on pildil, asendab selle pildi rohelise ekraani ühtlane värviline pind, mille värvikoodid võrduvad tulevase mosaiigi sihtmärgi keskmise värviga.

4. samm: aitäh

Aitäh
Aitäh

Täname, et lugesite minu juhendit. See oli minu esimene. Loodan, et teile meeldis.

Soovitan: