INHOUDSOPGAWE:

RoboPhoto - 'n Mosaïese kragopwekker vir die publiek: 4 stappe
RoboPhoto - 'n Mosaïese kragopwekker vir die publiek: 4 stappe

Video: RoboPhoto - 'n Mosaïese kragopwekker vir die publiek: 4 stappe

Video: RoboPhoto - 'n Mosaïese kragopwekker vir die publiek: 4 stappe
Video: How to create 3D art ai image generating in mobile | Midjourney amazing art mobile sinhala 2024, November
Anonim
Image
Image
RoboPhoto - 'n Mosaïese kragopwekker vir die publiek
RoboPhoto - 'n Mosaïese kragopwekker vir die publiek
RoboPhoto - 'n Mosaïese kragopwekker vir die publiek
RoboPhoto - 'n Mosaïese kragopwekker vir die publiek

RoboPhoto is 'n intydse fotomosaïekgenerator

RoboPhoto skep 'n fotomosaïek van sy gebruikers - terwyl u wag.

Deur moderne digitale tegnieke soos beeldverwerking, gesigsherkenning en kunsmatige intelligensie te gebruik, kan RoboPhoto 'n fotomosaïek skep van alle besoekers wat verbystap en op die knoppie druk-in reële tyd.

Elke keer as op die knoppie gedruk word, word 'n foto geneem van die persoon byderhand. Elke foto word onmiddellik deur RoboPhoto geskandeer en geïnterpreteer. Die RoboPhoto -sagteware verander dan elke individuele beeld - sodat dit deel van 'n groter beeld word, en druk dan die gewysigde prent op 'n plakker met 'n stel koördinate wat die ligging van elke foto in die groter beeld aandui. Elke besoeker word dan gevra om sy eie foto-plakker op 'n groter doek te plaas wat slegs 'n ooreenstemmende rooster bevat.

Tydens die werking van RoboPhoto sal 'n nuwe beeld geskep word. 'N Fotomosaïek wat bestaan uit hierdie individuele foto's wat 'n voorafbepaalde' teikenbeeld 'sal naboots.

RoboPhoto werk ook in enkelgebruikermodus. As dit op hierdie manier gekonfigureer is, skep RoboPhoto 'n volledige mosaïek van 'n enkele gebruiker.

Voorrade

  • 'N Windows 10 -rekenaar met Visual Studio en IoT -pakkette geïnstalleer
  • 'N Raspberry Pi 3B+ met Microsoft Windows 10 IoT geïnstalleer
  • 'N Kleuretiketdrukker (Brother VC-500W)
  • 'N Groot rooi drukknop gemonteer op 'n voetstuk vir gebruikersinvoer
  • 'N HDMI-skerm vir terugvoer van gebruikers
  • 'N Microsoft Xbox Kinect v2-kamera- van my seun gesteel- om foto's te neem
  • 'N Netwerk (Wifi, LAN)
  • 'N Doelrooster. 'N vel papier met 'n rooster daarop gedruk -gevul met koördinate. Hierdie papierrooster word gebruik as doek waar besoekers hul foto op die aangewese koördinate kan plak. En uiteindelik vorm hulle die eindresultaat: 'n pragtige nuwe fotomosaïek.

'N Microsoft Kinect 2.0-kamera is gebruik omdat dit dieptefoto's kan neem. Hierdie funksie word gebruik om 'n virtuele groen skerm op elke individuele fotograp te skep. Op hierdie manier kan RoboPhoto die agtergrond op elke individuele foto herverf sodat dit ooreenstem met die kleur van 'n doelstuk in die toekomstige mosaïek.

Stap 1: Hoe dit werk

Hoe dit werk
Hoe dit werk
Hoe dit werk
Hoe dit werk
Hoe dit werk
Hoe dit werk
Hoe dit werk
Hoe dit werk

RoboPhoto is 'n installasie wat bestaan uit 'n voetstuk met 'n groot rooi knoppie daarop, 'n rekenaar met etiketdrukker aangeheg en 'n klein IoT -toestel wat die gebruikerskoppelvlak hanteer (skerm en knoppie). In my geval: 'n RaspBerry 3B+.

  1. RoboPhoto werk op 'n openbare toeganklike plek en werk (nadat dit aangeskakel is) self. By die hardloop word verbygaande besoekers deur RoboPhoto aangemoedig om op die groot rooi knoppie te druk.
  2. Elke keer as op die groot rooi knoppie gedruk word, sal RoboPhoto 'n foto neem van die besoeker wat net met die Kinect -kamera op die knoppie gedruk het.
  3. Dan sal RoboPhoto sy gevorderde A. I. en beeldverwerkingsvaardighede om elke foto te verander om by 'n stuk in die toekomstige mosaïek te pas. Om dit te bereik, verf RoboPhoto die agtergrond van elke foto sodat dit ooreenstem met die kleur van 'n doelstuk in 'n vooraf gelaaide prent. Na die redigering druk RoboPhoto die bewerkte foto op 'n plakker uit, tesame met 'n stel koördinate wat die ligging van hierdie een plakker in die mosaïek aandui.

  4. Daarna word die gebruiker gevra om die plakker op die teikenblad van die mosaïek te plaas.
  5. En dus - nadat baie mense besoek het - sal 'n nuwe kunswerk verskyn. Om 'n mosaïek te maak, benodig u baie individuele stukke. Ek het behoorlike resultate behaal met 600 stukke

RoboPhoto kan ook in enkelgebruikermodus werk.

In hierdie opset skep RoboPhoto 'n volledige mosaïek van foto's wat deur een gebruiker geredigeer is. Nadat u op die knoppie gedruk het, sal RoboPhoto ongeveer> 600 verskillende foto's van die gebruiker neem, en dan almal redigeer en rangskik om 'n enkele nuwe mosaïek te vorm, geskep na 'n vooraf geselekteerde teikenbeeld.

Stap 2: Monteer die hardeware

Die samestelling van die hardeware
Die samestelling van die hardeware
Die samestelling van die hardeware
Die samestelling van die hardeware

Soos in die prent hierbo getoon, is die Win 10 -rekenaar aan die Kinect -kamera gekoppel. Kinect moet via USB 3.0 verbind word. Destyds het ek RoboPhoto geskep - geen Raspberry Pi met USB 3.0 was beskikbaar nie.*

Die rekenaar word ook gebruik om drukwerk na die aangehegte etiketdrukker te hanteer. In my geval 'n Brother VC-500W. 'N Redelike goedkoop huishoudelike kleuretiket. Dit is egter baie stadig. As u kan, gebruik 'n professionele een.

Die Big Red Button is gekoppel aan 'n Raspberry Pi 3B+. Slegs 4 drade is aan die GPIO gekoppel. Dit is die enigste soldeer wat in hierdie instruksies benodig word. Die Pi bied ook terugvoer aan ons besoeker deur middel van 'n 7 '' TFT-skerm via HDMI.

Om dit op te ruim, het ek 'n hout voetstuk gebou wat al hierdie komponente bevat.

Langs die voetstuk, teen die muur, word 'n vel papier met die doelrooster en koördinate geplaas (A1/A2). Omdat die etiketdrukker wat ek gebruik het, maksimum is volgens etiketwydte = 2, 5 cm, meet alle vierkante in hierdie rooster 2, 5 cm x 2, 5 cm.

*Vandag bied Raspberry Pi4 wel USB3.0. Alse W10 kan op die toestel uitgevoer word. Dit sou dus teoreties moontlik wees om 'n RoboPhoto v2.0 te skep sonder die gebruik van 'n rekenaar. Miskien sal Covid '19 my genoeg tyd gee om binnekort so 'n Instructable te publiseer.

Stap 3: Skryf die kode

Die skryf van die kode
Die skryf van die kode
Die skryf van die kode
Die skryf van die kode

Kode

RoboPhoto is geskep met VisualStudio as 'n oplossing met twee projekte:

  1. 'N Windows Forms -toepassing op die rekenaar bied 'n TCP -bediener aan en hanteer Kinect -invoer
  2. 'N Raspberry Pi 3B+ wat 'n TCP-kliënt in 'n UWP-hoofprogram aanbied (ingestel as opstartprogram) om knopperspersgebeurtenisse te hanteer en terugvoer te gee aan die gebruiker via sy 7' 'TFT-skerm.

In die diagram hierbo het ek probeer om u 'n idee te gee van wat my sagte doen. Die Visual Studio wat ek geskryf het om hierdie (absoluut 100% werkende) RoboPhoto -oplossing te skep, word saam met hierdie instruksies voorsien. Ek moet egter almal waarsku om hierdie lêer af te laai: die kode wat ek geskryf het, is verre van mooi en is dikwels aan my dev-PC gebind. Ek moedig dus almal aan om 'n beter, mooier en bestendiger oplossing te skep.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Netwerk

In die voorbeeldkode word die Pi -kode deur Visual Studio na 'n IPAddress in my netwerk ontplooi. U moet dit waarskynlik verander sodat dit by u eie pas. Om dit te doen - klik met die rechtermuisknop op die ARM -kliëntprojek nadat u die oplossing in Visual Studio oopgemaak het, kies dan eienskappe en verander die waarde Remote -masjien na die IP -adres van u eie Pi. U moet ook toelaat dat verkeer van kliënt na bediener op poort 8123 binne die Windows Firewall op die bediener (rekenaar) gaan. As u die oplossing van Visual Studio gebruik, moet u dit vra vir U.

Tydens kodering het ek baie probleme ondervind om die W32 en UWP behoorlik te laat kommunikeer. Ek het dit reggekry deur twee aparte klasse in kliënt en bediener te gebruik: resp. MyEchoClient.cs (in die ARM -kliënt) en ConnectionClient.cs (hantering van kliëntverbindings in die bediener).

Mosaïese lêers - pasgemaakte klas

RoboPhoto skep mosaïek om 'n teikenbeeld na te boots. Hierdie doelbeeld en alle individuele foto's wat saam die toekomstige mosaïek uitmaak, asook 'n paar ander eienskappe van elke RoboPhoto, word in lêers in 'n lêerstelsel gestoor. My gepaardgaande kode gebruik 'n stel lêers en gidse in die gids c: / tmp / MosaicBuilder. Binne hierdie vouer lees die kode alle subgidse met 'n vouernaam wat begin met [prj_] as mosaïekprojekvouers. Binne al hierdie [prj_] vouers sal dit probeer om 'n projekbestand met die naam [_projectdata.txt] oop te maak wat alle inligting bevat wat vir elke projek benodig word.

So 'n projeklêer bestaan uit:

  1. die volledige pad en lêernaam van die doelbeeld van hierdie projek
  2. die volledige pad waar individuele foto's (stukke) van hierdie projek gestoor word
  3. Aantal kolomme wat die mosaïek sal bevat
  4. Aantal rye wat die mosaïek sal bevat

Voorbeeldprojekte word verskaf in die zip -lêer: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

In die C# -bedienerkode word alle mosaïekhantering gedoen via 'n pasgemaakte klas: BBMosaicProject.cs

Microsoft Kinect v2.0 - Groenskerm

Om net foto's te neem, sal enige kamera doen. Maar ek het Microsoft Kinect v2.0 gebruik om kleurprente en dieptebeelde te kombineer. Op hierdie manier kan 'n groen skerm -effek geskep word. Die agtergrond in alle kleurbeelde wat van Kinect ontvang word, sal vervang word met 'n eenvormige groen oppervlak (BBBackgroundRemovalTool.cs).

'N Verwysing na Microsoft. Kinect is by die bedienerprojek gevoeg.

EMGU

Omdat ons seker moet wees dat 'n persoon op die foto is wat geneem is toe die knoppie ingedruk is, is gesigsherkenningsvermoëns by RoboPhoto gevoeg.

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

Slegs as 'n persoon binne die prentjie is, word die groen skerm in hierdie prentjie vervang deur 'n eenvormige gekleurde oppervlak, met kleurkodes gelyk aan die gemiddelde kleur van die doelstuk in die toekomstige mosaïek.

Stap 4: Dankie

Dankie
Dankie

Dankie dat u my Instructable gelees het. Dit was my eerste. Ek hoop jy het dit geniet.

Aanbeveel: