Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Hvordan det fungerer
- Trinn 2: Montering av maskinvaren
- Trinn 3: Skrive koden
- Trinn 4: Takk
Video: RoboPhoto - en mosaikkgenerator for publikum: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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
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+.
- 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.
- 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.
-
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.
- Deretter blir brukeren bedt om å plassere klistremerket på mosaikkmålarket.
- 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
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
Kode
RoboPhoto ble opprettet med VisualStudio som en løsning med to prosjekter:
- En Windows Forms -applikasjon på PC -en er vert for en TCP -server og håndterer Kinect -inngang
- 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:
- hele banen og filnavnet til målbildet til dette prosjektet
- hele banen hvor individuelle fotografier (stykker) av dette prosjektet er lagret
- Antall kolonner mosaikken vil inneholde
- 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 for at du leser min Instructable. Dette var min første. Jeg håper du likte det.
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
Slik laster du fôr til kyr: 9 trinn
Slik laster du fôr til kyr: Alt som lever trenger mat for å overleve. I vinter- og vårmånedene er det ikke gress for kyr å beite på. Dette gjør det veldig viktig at kuene blir matet skikkelig slik at de produserer sunne kalver. I de følgende trinnene vil pr
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw