Indholdsfortegnelse:
- Trin 1: Grundidéen og de nødvendige dele
- Trin 2: Installer OpenCV -modulet
- Trin 3: Udskrivning af kameraholderen
- Trin 4: Afslutning af kameramontering
- Trin 5: Den uddannede model for maskinlæring
- Trin 6: Koden der får det hele til at ske
- Trin 7: Kassens åbningsmekanisme
- Trin 8: Gør æsken til Harry Potter -tema
Video: Real Working Harry Potter Wand ved hjælp af computervision: 8 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
"Enhver tilstrækkeligt avanceret teknologi kan ikke skelnes fra magi" - Arthur C. Clarke
For et par måneder siden besøgte min bror Japan og havde en rigtig troldmandsoplevelse i Harry Potter's Wizarding World i Universal Studios muliggjort gennem teknologien til Computer Vision.
I Harry Potter's Wizarding World i Universal Studios kan turisterne udføre "ægte magi" på bestemte steder (hvor motion capture-systemet er installeret) ved hjælp af specialfremstillede tryllestave med retro-reflekterende perler i spidsen. Troldene kan købes i en ægte Ollivanders butik, der er præcis som den, der vises i Harry Potter -filmene, men husker: "Det er tryllestaven, der vælger troldmanden": P
På de bestemte steder, hvis personen udfører en bestemt gestus med tryllestav, genkender bevægelsesoptagelsessystemet gestusen, og alle bevægelser svarer til en bestemt stave, der forårsager visse aktiviteter i det omkringliggende område som at tænde springvandet osv.
Så i denne Instructable vil jeg vise, hvordan du kan oprette et billigt og effektivt motion capture -system derhjemme til at udføre "rigtig magi" ved at åbne en kasse med svirp på din tryllestav: D ved hjælp af et normalt Night Vision Camera, noget elektronik, og lidt python -kode ved hjælp af OpenCV Computer Vision -biblioteket og Machine Learning !!!
Trin 1: Grundidéen og de nødvendige dele
Stavene, der er købt fra Wizarding World of Harry Potter i Universal Studios, har en retroreflekterende perle i spidsen. Disse retroreflekterende perler afspejler en stor mængde infrarødt lys, der afgives af kameraet i bevægelsesoptagelsessystemet. Så hvad vi mennesker opfatter som en ikke-så særpræget spids af staven, der bevæger sig i luften, opfatter bevægelsesoptagelsessystemet som en lys klat, der let kan isoleres i videostrømmen og spores for at genkende det mønster, der er tegnet af personen og udføre den nødvendige handling. Al denne behandling foregår i realtid og gør brug af Computer Vision og Machine Learning.
Et simpelt Night Vision -kamera kan bruges som vores kamera til bevægelsesoptagelse, da de også sprænger infrarødt lys ud, som ikke er synligt for mennesker, men tydeligt kan ses med et kamera, der ikke har noget infrarødt filter. Så videostrømmen fra kameraet føres ind i et hindbær pi, som har et python -program, der kører OpenCV, som bruges til at detektere, isolere og spore stavspidsen. Derefter bruger vi SVM (Simple Vector Machine) algoritme til maskinlæring til at genkende det tegnede mønster og følgelig kontrollere GPIO'erne for hindbærpi til at udføre nogle aktiviteter.
De nødvendige materialer:
1) En Raspberry Pi 3 model B og det nødvendige tilbehør som tastatur og mus
2) Raspberry Pi NoIR (Intet infrarødt) kameramodul
3) Harry Potter Wand med retroreflektor på spidsen: Bare rolig, hvis du ikke har en. Alt med en retroreflektor kan bruges. Så du kan bruge enhver stavlignende pind og anvende retroreflektortape, maling eller perler på spidsen, og det skal fungere som vist i videoen af William Osman: Se videoen
4) 10 infrarøde lysdioder
5) En 3D -printer og PLA -filament efter eget valg
6) 12V - 1A vægadapter og DC -stik
7) En servomotor
8) En gammel kasse og en tale fra cyklens hjul
9) En varm limpistol
10) Udskrifter af nogle Harry Potter -relaterede logoer og billeder på blank ark
11) Grønne og gule fløjlplader.
BEMÆRK: Jeg forsøgte også at bruge et gammelt almindeligt webcam til nattesyn ved at fjerne dets infrarøde filter, men endte med at beskadige/fortrænge dets linse, hvilket påvirkede videokvaliteten meget, og jeg kunne ikke bruge det. Men hvis du vil give det et skud, kan du gå igennem dette fantastiske instruerbare klik her
Trin 2: Installer OpenCV -modulet
Nu er det tid til det første og sandsynligvis det længste trin i hele dette projekt: Installation og opbygning af OpenCV -modulet i din Raspberry Pi.
Installationen af afhængighederne for OpenCV -modulet tager ikke meget tid, men byggeprocessen kan tage op til 2 til 3 timer !! Så spænde op !!: P
Der er mange selvstudier online, som du kan følge for at installere OpenCV 4.1.0 -modulet. Her er linket til den, jeg fulgte: Klik her
BEMÆRK: Jeg anbefaler kraftigt at installere OpenCV -modulet i virtuelle miljø som vist i selvstudiet, da det forhindrer forskellige slags konflikter, der kan opstå på grund af installation af afhængigheder af forskellige moduler eller mens du arbejder med forskellige versioner af python.
Trin 3: Udskrivning af kameraholderen
NoIR picamera har intet infrarødt filter og kan derfor bruges som et nattesynskamera, men det mangler stadig en infrarød lyskilde. Alle nattesynskameraer har deres egen infrarøde lyskilde, som sprænger IR -stråler ud i mørket, som er usynlige for det blotte øje, men strålerne kan ses af kameraet uden infrarødt filter, efter de er blevet reflekteret fra et objekt.
Så vi har stort set brug for en infrarød lyskilde og noget at montere kameraet på. Til dette designede jeg en simpel 3D -model af et objekt, hvorpå vi kunne montere kameraet, som vi vil omgivet af 10 IR -lysdioder i en cirkel. Modellen blev oprettet med SketchUp og udskrevet med sort PLA på cirka 40 minutter.
Trin 4: Afslutning af kameramontering
Efter udskrivning af modellen slibede jeg den først med et sandpapir af 80 grus og begyndte derefter at placere IR -lysdioderne i deres huller i henhold til diagrammet ovenfor.
Jeg sikrede lysdioderne på deres sted med lidt varm lim og sluttede derefter de positive og negative ledninger fra to på hinanden følgende lysdioder sammen og lodde dem derefter for at skabe en serieforbindelse af lysdioderne.
Den positive ledning af en ledning og den negative ledning af ledningen ved siden af den i bunden blev efterladt loddet for at forbinde de positive og negative ender fra 12 volt vægadapteren.
Trin 5: Den uddannede model for maskinlæring
For at genkende det bogstav, der blev tegnet af en person, trænede jeg en maskinindlæringsmodel baseret på Support Vector Machine (SVM) algoritmen ved hjælp af et datasæt med håndskrevne engelske alfabeter, jeg fandt her. SVM'er er meget effektive maskinlæringsalgoritmer, som kan give en høj nøjagtighed, omkring 99,2% i dette tilfælde !! Læs mere om SVM'er
Datasættet er i form af.csv -fil, der indeholder 785 kolonner og mere end 300.000 rækker, hvor hver række repræsenterer et 28 x 28 billede, og hver kolonne i den række indeholder værdien af den pågældende pixel for det pågældende billede med en ekstra kolonne i begyndelsen, der indeholder etiketten, et tal fra 0 til 25, der hver svarer til et engelsk bogstav. Gennem en simpel python -kode skåret jeg dataene for at få alle billederne til kun de 2 bogstaver (A og C), jeg ønskede, og uddannede en model til dem.
Jeg har vedhæftet den uddannede model (alphabet_classifier.pkl), og også træningskoden er velkommen til at gå igennem den eller foretage ændringer for at træne modellen med forskellige bogstaver eller prøve forskellige algoritmer. Efter at have kørt programmet, gemmer den automatisk den uddannede model i det samme bibliotek, hvor din kode er gemt.
Trin 6: Koden der får det hele til at ske
Efter at have oprettet den uddannede model er det sidste trin at skrive et python -program til vores Raspberry Pi, der giver os mulighed for at gøre følgende:
- Få adgang til video fra picameraet i realtid
- Find og spor hvide klatter (i dette tilfælde spidsen af staven, der lyser i nattesyn) i videoen
- Begynd at spore stien til den bevægelige klat i videoen efter en eller anden triggerhændelse (forklaret nedenfor)
- Stop sporing efter en anden triggerhændelse (forklaret nedenfor)
- Returner den sidste ramme med det mønster, der er tegnet af brugeren
- Udfør forbehandling på rammen som tærskelværdi, støjfjernelse, ændring af størrelse osv.
- Brug den behandlede sidste ramme til forudsigelse.
- Udfør en slags magi ved at styre GPIO'erne på Raspberry Pi i henhold til forudsigelsen
Til dette projekt oprettede jeg en boks med Harry Potter -tema, som jeg kan åbne og lukke ved hjælp af en servomotor, der styres af GPIO på Raspberry Pi. Da bogstavet 'A' står for 'Alohamora' (en af de mest berømte stave fra Harry Potter -filmene, som gør det muligt for en troldmand at åbne en hvilken som helst lås !!), hvis en person tegner bogstavet A med tryllestaven, befaler pi servoen at åbne kassen. Hvis personen tegner bogstavet 'C', der står for close (da jeg ikke kunne tænke på en passende stave, der blev brugt til at lukke eller låse: P), kommanderer pi servoen i at lukke boksen.
Alt arbejde i forbindelse med billed-/videobehandling, som blobdetektering, sporing af klatens vej, forbehandling af den sidste ramme osv., Udføres gennem OpenCV-modulet.
For de ovennævnte triggerhændelser oprettes der to cirkler på realtidsvideoen, en grøn og en rød cirkel. Når kluden kommer ind i området inden for den grønne cirkel, begynder programmet at spore den sti, der er taget af klatten efter det øjeblik, så personen kan begynde at oprette brevet. Når klatten når den røde cirkel, stopper videoen, og den sidste ramme sendes til en funktion, der udfører forbehandlingen på rammen for at gøre den klar til forudsigelse.
Jeg har vedhæftet kodefilerne i dette trin. Gå gerne igennem det og foretag eventuelle ændringer, som du ønsker.
BEMÆRK: Jeg var nødt til at oprette to separate python -filer, der arbejdede med forskellige python -versioner, en som importerer OpenCV -modul (Python 2.7) og en anden, der importerer sklearn -modulet (Python 3.5) til forudsigelse efter indlæsning af den uddannede model, da min OpenCV blev installeret til Python 2.7 -versionen, mens sklearn blev installeret til python 3.5. Så jeg brugte delprocesmodulet til at køre filen HarryPotterWandsklearn.py (til forudsigelse) fra HarryPotterWandcv.py (til alt opencv -arbejde og videooptagelse i realtid) og få sit output. På denne måde behøver jeg kun at køre HarryPotterWandcv.py -filen.
Trin 7: Kassens åbningsmekanisme
Jeg havde en gammel rød farvet kasse liggende, som jeg brugte til dette projekt.
Til boksåbningsmekanisme:
- Jeg varmlimede en servo nær den bageste ende af kassen på et stykke pap nær æsken.
- Så tog jeg en eger fra hjulet i en cyklus og varmlimede den til armen på servoen.
- Den anden ende af eiken blev fastgjort til æsken med et stykke tråd.
- Servo positiv blev forbundet til +5V Pin 2 på Raspberry Pi.
- Negativt for servo var forbundet til GND Pin 39.
- Servosignal blev tilsluttet Pin 12
Trin 8: Gør æsken til Harry Potter -tema
Til fremstilling af æsken med Harry Potter -tema udprintede jeg nogle farvede billeder af forskellige ting som Harry Potter -logoet, Hogwarts -kresten, kam i hvert af de fire huse osv. På blank A4 -ark og indsatte dem på æsken på forskellige steder.
Jeg brugte også et gulfarvet fløjlsark til at klippe strimler og klistrede dem på låget for at give boksen den samme farve som Gryffindor House. Jeg dækkede indersiden af låget og pap til servo med grønt fløjlsark. På indersiden af låget klistrede jeg flere symboler og et emblem, der viser dyrene, der repræsenterer hvert hus på Hogwarts -skolen.
Så fyldte jeg endelig alle mine Harry Potter -relaterede ting i kassen, der inkluderede en Gryffindor lydpotte, en dagbog med Hogwarts -uniformen og den ældste Wand, der blev brugt i dette projekt: D
Anbefalede:
Real Life Moving Portraits From Harry Potter !: 11 trin (med billeder)
Real Life Moving Portraits From Harry Potter !: " Fantastisk! Fantastiske! Dette er ligesom magi! &Quot; - Gilderoy LockhartJeg er en kæmpe Harry Potter -fan, og en af de ting, jeg altid har elsket fra troldmandsverdenen, er de bevægelige portrætter. Jeg faldt over Kyle Stewart-Frantz's Animated Pictur
Hacking af Hexbug Spider XL for at tilføje computervision ved hjælp af en Android -smartphone: 9 trin (med billeder)
Hacking af Hexbug Spider XL for at tilføje computervision ved hjælp af en Android -smartphone: Jeg er en stor fan af den originale Hexbug ™ Edderkop. Jeg har ejet over et dusin og hacket dem alle. Når som helst en af mine sønner går til en ven ’ fødselsdagsfest, får vennen en Hexbug &handel; edderkop som en gave. Jeg har hacket eller
Working Sorting Hat fra Harry Potter: 8 trin
Working Sorting Hat fra Harry Potter: I vores muggleverden er der ingen magisk hat til at sortere os ind i vores huse. Så jeg har brugt denne karantænemulighed til at lave en sorteringshat
Sådan laver du en drone ved hjælp af Arduino UNO - Lav en quadcopter ved hjælp af mikrokontroller: 8 trin (med billeder)
Sådan laver du en drone ved hjælp af Arduino UNO | Lav en Quadcopter ved hjælp af mikrokontroller: Introduktion Besøg min Youtube -kanal En Drone er en meget dyr gadget (produkt) at købe. I dette indlæg vil jeg diskutere, hvordan jeg gør det billigt ?? Og hvordan kan du lave din egen sådan til en billig pris … Nå i Indien alle materialer (motorer, ESC'er
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores