Innholdsfortegnelse:

RoboPhoto - en mosaikkgenerator for publikum: 4 trinn
RoboPhoto - en mosaikkgenerator for publikum: 4 trinn

Video: RoboPhoto - en mosaikkgenerator for publikum: 4 trinn

Video: RoboPhoto - en mosaikkgenerator for publikum: 4 trinn
Video: The Ten Commandments | Dwight L Moody | Free Christian Audiobook 2024, Juli
Anonim
Image
Image
RoboPhoto - en mosaikkgenerator for publikum
RoboPhoto - en mosaikkgenerator for publikum
RoboPhoto - en mosaikkgenerator for publikum
RoboPhoto - en mosaikkgenerator for publikum

RoboPhoto er en fotomosaikkgenerator i sanntid

RoboPhoto lager en fotomosaikk av brukerne - mens du venter.

Ved å bruke moderne digitale teknikker som bildebehandling, ansiktsgjenkjenning og kunstig intelligens, er RoboPhoto i stand til å lage en fotomosaikk av alle besøkende som går forbi og trykker på knappen-i sanntid.

Hver gang du trykker på knappen, blir det tatt et bilde av personen ved hånden. Hvert bilde blir skannet og tolket av RoboPhoto. RoboPhoto -programvaren vil deretter endre alle individuelle bilder - slik at det blir en del av et større bilde, og deretter skrive ut dette endrede bildet på et klistremerke merket med et sett med koordinater som angir plasseringen av hvert foto i det større bildet. Hver besøkende blir deretter bedt om å plassere sitt eget fotoklistremerke på et større lerret som bare inneholder et tilsvarende rutenett.

Under driften av RoboPhoto vil det bli opprettet et nytt bilde. En fotomosaikk sammensatt av disse individuelle fotografiene som vil etterligne et forhåndsdefinert "målbilde".

RoboPhoto opererer også i enkeltbrukermodus. Når den er konfigurert på denne måten, lager RoboPhoto en full mosaikk av en enkelt bruker.

Rekvisita

  • En Windows 10 -PC med Visual Studio og IoT -pakker installert
  • En Raspberry Pi 3B+ med Microsoft Windows 10 IoT installert
  • En fargemerkeskriver (Brother VC-500W)
  • En stor rød trykknapp montert på en sokkel for brukerinngang
  • En HDMI-skjerm for brukerfeedback
  • Et Microsoft Xbox Kinect v2-kamera- stjålet fra min sønn- for å ta bilder
  • Et nettverk (Wifi, LAN)
  • Et målnett. Et ark med et rutenett trykt på det -fylt med koordinater. Dette papirrutenettet brukes som lerret hvor besøkende kan feste fotografiet sitt på de angitte koordinatene. Og så til slutt vil de danne sluttresultatet: en vakker ny fotomosaikk.

Et Microsoft Kinect 2.0-kamera ble brukt fordi det kan ta dybdebilder. Denne funksjonen brukes til å lage en virtuell green -screen på hvert enkelt fotograp. På denne måten kan RoboPhoto male bakgrunnen på hvert enkelt fotografi for å matche fargen på et målbrikke i mosaikken.

Trinn 1: Hvordan det fungerer

Hvordan det fungerer
Hvordan det fungerer
Hvordan det fungerer
Hvordan det fungerer
Hvordan det fungerer
Hvordan det fungerer
Hvordan det fungerer
Hvordan det fungerer

RoboPhoto er en installasjon som inneholder en sokkel med en stor rød knapp på, en datamaskin med etikettskriver festet og en liten IoT -enhet som håndterer brukergrensesnittet (skjerm og knapp). I mitt tilfelle: en RaspBerry 3B+.

  1. RoboPhoto opererer på et offentlig tilgjengelig sted og er (etter å ha slått den på) selvoperert. Når du løper, oppmuntres forbipasserende besøkende av RoboPhoto til å trykke på den store røde knappen.
  2. Når du trykker på den store røde knappen, vil RoboPhoto ta et bilde av den besøkende som nettopp trykket på knappen med Kinect -kameraet.
  3. Da vil RoboPhoto bruke sin avanserte A. I. og bildebehandlingskunnskaper for å endre hvert bilde for å matche et stykke i mosaikken. For å oppnå dette, maler RoboPhoto bakgrunnen på hvert foto for å matche fargen på målstykket i et forhåndslastet bilde. Etter redigeringen skriver RoboPhoto ut det redigerte bildet på et klistremerke sammen med et sett med koordinater som peker plasseringen av dette ene klistremerket i mosaikken.

  4. Deretter blir brukeren bedt om å plassere klistremerket på mosaikkmålarket.
  5. Og dermed - etter at mange mennesker har besøkt - vil et nytt kunstverk dukke opp. For å lage en mosaikk trenger du mange individuelle stykker. Jeg fikk anstendige resultater på 600 stykker

RoboPhoto kan også fungere i enkeltbrukermodus.

I denne konfigurasjonen lager RoboPhoto en full mosaikk med bilder som er redigert fra en enkelt bruker. Etter å ha trykket på knappen, vil RoboPhoto skyte omtrent> 600 forskjellige fotografier av brukeren, og deretter redigere og ordne dem alle til en ny ny mosaikk, laget etter et forhåndsvalgt målbilde.

Trinn 2: Montering av maskinvaren

Montering av maskinvaren
Montering av maskinvaren
Montering av maskinvaren
Montering av maskinvaren

Som vist på bildet ovenfor, er Win 10 -PC -en koblet til Kinect -kameraet. Kinect må være tilkoblet med USB 3.0. På den tiden jeg opprettet RoboPhoto - ingen Raspberry Pi med USB 3.0 var tilgjengelig.*

PC -en brukes også til å håndtere utskrift til den vedlagte etikettskriveren. I mitt tilfelle en Brother VC-500W. En ganske billig husholdningsfargemerkeskriver. Det er imidlertid veldig veldig sakte. Det er bedre å bruke en profesjonell hvis du kan.

Den store røde knappen er festet til en Raspberry Pi 3B+. Bare 4 ledninger er festet til GPIO. Dette er den eneste lodding som trengs i denne instruksjonsboken. Pi gir også tilbakemelding til vår besøkende ved hjelp av en 7 '' TFT-skjerm over HDMI.

For å rydde opp, bygde jeg en trepidestall som inneholder alle disse komponentene.

Ved siden av sokkelen, mot veggen, legges et ark med målrutenett og koordinater (A1/A2). Fordi etikettskriveren jeg brukte maks ut etter etikettbredde = 2, 5 cm, måler alle firkanter i dette rutenettet 2, 5 cm x 2, 5 cm.

*I dag tilbyr Raspberry Pi4 USB3.0. Alse W10 kan kjøres på enheten. Så det burde teoretisk sett være mulig å lage en RoboPhoto v2.0 uten bruk av en PC. Kanskje Covid '19 vil gi meg nok tid til å publisere en slik instruks snart.

Trinn 3: Skrive koden

Skriver koden
Skriver koden
Skriver koden
Skriver koden

Kode

RoboPhoto ble opprettet med VisualStudio som en løsning med to prosjekter:

  1. En Windows Forms -applikasjon på PC -en er vert for en TCP -server og håndterer Kinect -inngang
  2. En Raspberry Pi 3B+ som er vert for en TCP-klient i en UWP-ledet applikasjon (angitt som oppstart-app) for å håndtere knappetrykkhendelser og gi brukeren tilbakemelding gjennom sin 7 '' TFT-skjerm.

I diagrammet ovenfor har jeg prøvd å gi deg en ide om hva myk gjør. Visual Studio jeg skrev for å lage denne (absolutt 100% fungerende) RoboPhoto -løsningen følger med denne Instructable. Imidlertid må jeg advare alle nedlasting av denne filen: Koden jeg skrev er langt fra pen og ofte bundet til min dev-PC. Så jeg oppfordrer alle til å lage en bedre, hyggeligere og jevnere løsning.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Nettverk

I eksempelkoden distribueres Pi -koden gjennom Visual Studio til en IPAddress i nettverket mitt. Du bør sannsynligvis endre dette for å passe ditt eget. For å gjøre dette - høyreklikk på ARM -klientprosjektet etter at du har åpnet løsningen i Visual Studio, velg deretter egenskaper og endre verdien Ekstern maskin til IP -adressen til din egen Pi. Du må også la trafikk gå fra klient til server på port 8123 i Windows -brannmuren på serveren (PC). Hvis du kjører løsningen fra Visual Studio, bør den be deg om å gjøre det for U.

Mens jeg har kodet, har jeg hatt mange problemer med å få W32 og UWP til å kommunisere skikkelig. Jeg fikk det til å fungere ved å bruke to separate klasser i klient og server: resp. MyEchoClient.cs (i ARM -klienten) og ConnectionClient.cs (hanlding -klientforbindelser på serveren).

Mosaikkfiler - tilpasset klasse

RoboPhoto lager mosaikker for å etterligne et målbilde. Dette målbildet og alle individuelle fotografier som sammen utgjør den kommende mosaikken, samt noen andre egenskaper for hvert RoboPhoto er lagret i filer i et filsystem. Den medfølgende koden min bruker et sett med filer og mapper i katalogen c: / tmp / MosaicBuilder. I denne mappen vil koden lese alle undermapper med et mappenavn som starter med [prj_] som mosaikkprosjektmapper. Innen alle disse [prj_] mappene vil den prøve å åpne en prosjektfil som heter [_projectdata.txt] som inneholder all informasjon som kreves for hvert prosjekt.

En slik prosjektfil består av:

  1. hele banen og filnavnet til målbildet til dette prosjektet
  2. hele banen hvor individuelle fotografier (stykker) av dette prosjektet er lagret
  3. Antall kolonner mosaikken vil inneholde
  4. Antall rader mosaikken vil inneholde

Eksempelprosjekter finnes i zip -filen: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

I C# -serverkoden utføres all mosaikkhåndtering via en tilpasset klasse: BBMosaicProject.cs

Microsoft Kinect v2.0 - Grønn skjerm

Bare for å ta bilder vil et hvilket som helst kamera gjøre. Men jeg har brukt Microsoft Kinect v2.0 til å kombinere fargebilder og dybdebilder. På denne måten kan du lage en grønn skjermeffekt. Bakgrunnen i alle fargebilder mottatt fra Kinect vil bli erstattet med en jevn grønn overflate (BBBackgroundRemovalTool.cs).

En referanse til Microsoft. Kinect ble lagt til i serverprosjektet.

EMGU

Fordi vi må være sikre på at en person er på fotografiet som ble tatt da du trykket på knappen, ble ansiktsgjenkjenningsfunksjoner lagt til i RoboPhoto.

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

Bare når en person er inne i bildet, vil den grønne skjermen i dette bildet bli erstattet av en jevn farget overflate, med fargekoder som er lik gjennomsnittsfargen på målstykket i den mosaikken som skal bli dette bildet.

Trinn 4: Takk

Takk skal du ha
Takk skal du ha

Takk for at du leser min Instructable. Dette var min første. Jeg håper du likte det.

Anbefalt: