Innehållsförteckning:

Verkligt fungerande Harry Potter Wand med Computer Vision: 8 steg (med bilder)
Verkligt fungerande Harry Potter Wand med Computer Vision: 8 steg (med bilder)

Video: Verkligt fungerande Harry Potter Wand med Computer Vision: 8 steg (med bilder)

Video: Verkligt fungerande Harry Potter Wand med Computer Vision: 8 steg (med bilder)
Video: Шокирующая правда о нечеловеческих НЛО: Джон Гриневальд раскрывает все 2024, November
Anonim
Image
Image
Riktigt fungerande Harry Potter Wand med datorsyn
Riktigt fungerande Harry Potter Wand med datorsyn
Riktigt fungerande Harry Potter Wand med datorsyn
Riktigt fungerande Harry Potter Wand med datorsyn
Riktigt fungerande Harry Potter Wand med datorsyn
Riktigt fungerande Harry Potter Wand med datorsyn

"Någon tillräckligt avancerad teknik går inte att skilja från magi" - Arthur C. Clarke

För några månader sedan besökte min bror Japan och hade verklig trollkarlserfarenhet i Harry Potter Wizarding World i Universal Studios som möjliggjordes genom tekniken Computer Vision.

I Harry Potter Wizarding World i Universal Studios kan turisterna utföra "riktig magi" på vissa platser (där rörelsefångningssystemet är installerat) med hjälp av specialtillverkade trollstavar med reflekterande pärlor vid spetsen. Trollstavarna kan köpas från en äkta Ollivandershop som är exakt som den som visas i Harry Potter -filmerna men kommer ihåg: "Det är trollstaven som väljer trollkarlen": P

På dessa platser om personen utför en viss gest med trollstav, känner rörelseshanteringssystemet igen gesten och alla gester motsvarar en viss stavning som orsakar vissa aktiviteter i det omgivande området som att slå på fontänen etc.

Så i den här instruktionsboken kommer jag att visa hur du kan skapa ett billigt och effektivt rörelseupptagningssystem hemma för att utföra "riktig magi" genom att öppna en låda med din trollspö: D med bara en vanlig Night Vision -kamera, lite elektronik, och lite pythonkod med OpenCV Computer Vision -biblioteket och maskininlärning !!!

Steg 1: Grundidén och de delar som krävs

Grundidén och de delar som krävs
Grundidén och de delar som krävs
Grundidén och de delar som krävs
Grundidén och de delar som krävs
Grundidén och de delar som krävs
Grundidén och de delar som krävs
Grundidén och de delar som krävs
Grundidén och de delar som krävs

Trollstavarna som är köpta från Wizarding World of Harry Potter i Universal Studios har en retroreflekterande pärla vid spetsen. De retroreflekterande pärlorna reflekterar en stor mängd infrarött ljus som ges ut av kameran i rörelseupptagningssystemet. Så, vad vi människor uppfattar som en inte så distinkt spets av staven som rör sig i luften, uppfattar rörelseupptagningssystemet som en ljus klump som enkelt kan isoleras i videoströmmen och spåras för att känna igen mönstret som ritas av personen och utföra den nödvändiga åtgärden. All denna bearbetning sker i realtid och använder Computer Vision och Machine Learning.

En enkel Night Vision -kamera kan användas som vår kamera för rörelseinspelning eftersom de också spränger ut infrarött ljus som inte är synligt för människor men kan ses tydligt med en kamera som inte har något infrarött filter. Så, videoströmmen från kameran matas in i en hallon pi som har ett pythonprogram som kör OpenCV som används för att upptäcka, isolera och spåra spetsen. Sedan använder vi SVM (Simple Vector Machine) algoritm för maskininlärning för att känna igen det ritade mönstret och därmed styra GPIO: erna för hallon pi för att utföra vissa aktiviteter.

Material som krävs:

1) En Raspberry Pi 3 modell B och nödvändiga tillbehör som tangentbord och mus

2) Raspberry Pi NoIR (ingen infraröd) kameramodul

3) Harry Potter Wand med retroreflektor vid spetsen: Oroa dig inte om du inte har en. Allt med en retroreflektor kan användas. Så, du kan använda vilken stavliknande pinne som helst och applicera retroreflektortejp, färg eller pärlor på spetsen och det ska fungera som visas i videon av William Osman: Titta på videon

4) 10 infraröda lysdioder

5) En 3D -skrivare och PLA -filament efter eget val

6) 12V - 1A Väggadapter och DC -uttag

7) En servomotor

8) En gammal låda och ett tal från ratten i en cykel

9) En varm limpistol

10) Utskrifter av några Harry Potter -relaterade logotyper och bilder på glansigt papper

11) Gröna och gula sammetlakan.

OBS: Jag försökte också använda en gammal vanlig webbkamera för mörkerseende genom att ta bort dess infraröda filter men slutade med att skada/förskjuta dess objektiv vilket påverkade videokvaliteten mycket och jag kunde inte använda den. Men om du vill ge det en chans kan du gå igenom denna fantastiska instruerbara Klicka här

Steg 2: Installera OpenCV -modulen !

Nu är det dags för det första och förmodligen det längsta steget i hela detta projekt: Installationen och byggandet av OpenCV -modulen i din Raspberry Pi.

Installationen av beroenden för OpenCV -modulen tar inte mycket tid men byggprocessen kan ta upp till 2 till 3 timmar !! Så, Buckle Up !!: P

Det finns många självstudier online som du kan följa för att installera OpenCV 4.1.0 -modulen. Här är länken till den jag följde: Klicka här

OBS: Jag rekommenderar starkt att du installerar OpenCV -modulen i virtuell miljö som visas i självstudien eftersom det kommer att förhindra olika slags konflikter som kan uppstå på grund av att installera beroenden för olika moduler eller när du arbetar med olika versioner av python.

Steg 3: Skriva ut kamerafästet

Skriva ut kamerafästet
Skriva ut kamerafästet
Skriva ut kamerafästet
Skriva ut kamerafästet
Skriva ut kamerafästet
Skriva ut kamerafästet

NoIR picamera har inget infrarött filter och kan därför användas som nattkamera, men det saknar fortfarande en infraröd ljuskälla. Alla mörkerseende kameror har sin egen infraröda ljuskälla som spränger ut IR -strålar i mörkret som är osynliga för blotta ögat men strålarna kan ses av kameran utan infrarött filter efter att de reflekterats från något föremål.

Så vi behöver i princip en infraröd ljuskälla och något att montera kameran på. För detta konstruerade jag en enkel 3D -modell av ett objekt som vi kunde montera kameran på som vi kommer att omges av 10 IR -lysdioder i en cirkel. Modellen skapades med SketchUp och skrevs ut med svart PLA på cirka 40 minuter.

Steg 4: Avsluta kamerafästet

Avsluta kamerafästet
Avsluta kamerafästet
Avsluta kamerafästet
Avsluta kamerafästet
Avsluta kamerafästet
Avsluta kamerafästet

Efter att ha skrivit ut modellen slipade jag först med ett sandpapper med 80 grus och började sedan placera IR -lamporna i sina hål enligt diagrammet ovan.

Jag säkrade lysdioderna på deras plats med lite hett lim och sammanfogade sedan de positiva och negativa ledningarna för två på varandra följande lysdioder och lödde dem sedan för att skapa en seriekoppling av lysdioderna.

Den positiva ledningen för en ledning och den negativa ledningen för ledningen bredvid den i botten lämnades olödda för att ansluta de positiva och negativa ändarna från 12 volt väggadaptern.

Steg 5: Den utbildade modellen för maskininlärning

I syfte att känna igen bokstaven som ritats av en person tränade jag en maskininlärningsmodell baserad på Support Vector Machine (SVM) -algoritmen med hjälp av en Dataset med handskrivna engelska alfabet som jag hittade här. SVM är mycket effektiva maskininlärningsalgoritmer som kan ge en hög noggrannhet, cirka 99,2% i detta fall !! Läs mer om SVM

Datauppsättningen är i form av.csv -fil som innehåller 785 kolumner och mer än 300 000 rader där varje rad representerar en 28 x 28 bild och varje kolumn i den raden innehåller värdet för den pixeln för den bilden med en ytterligare kolumn i början som innehåller etiketten, ett tal från 0 till 25, var och en motsvarar en engelsk bokstav. Genom en enkel pythonkod, skivade jag data för att få alla bilder för endast de två bokstäverna (A och C) jag ville ha och utbildade en modell för dem.

Jag har bifogat den utbildade modellen (alphabet_classifier.pkl) och även utbildningskoden går gärna igenom den eller gör några ändringar för att träna modellen med olika bokstäver eller prova olika algoritmer. När programmet har körts sparas det automatiskt den utbildade modellen i samma katalog som koden sparas.

Steg 6: Koden som får allt att hända !

Koden som får allt att hända !!
Koden som får allt att hända !!

Efter att ha skapat den utbildade modellen är det sista steget att skriva ett pythonprogram för vår Raspberry Pi som gör att vi kan göra följande:

  • Få tillgång till video från picamera i realtid
  • Upptäck och spåra vita klumpar (i detta fall spetsen på trollspetsen som lyser i mörkerseende) i videon
  • Börja spåra vägen för den rörliga klumpen i videon efter någon utlösande händelse (förklaras nedan)
  • Sluta spåra efter en annan triggerhändelse (förklaras nedan)
  • Returnera den sista ramen med mönstret ritat av användaren
  • Utför förbehandling på ramen som tröskelvärde, brusborttagning, storleksändring etc.
  • Använd den bearbetade sista ramen för förutsägelse.
  • Utför någon form av magi genom att styra Raspberry Pi: s GPIO enligt förutsägelsen

För detta projekt skapade jag en låda med Harry Potter -tema som jag kan öppna och stänga med en servomotor som styrs av Raspberry Pi: s GPIO. Eftersom bokstaven 'A' står för 'Alohamora' (en av de mest kända stavningarna från Harry Potter -filmerna som gör att en trollkarl kan öppna valfritt lås !!), om en person ritar bokstav A med trollstaven, beordrar pi servon att öppna lådan. Om personen ritar bokstaven 'C' som står för close (eftersom jag inte kunde tänka mig någon lämplig stavning som används för att stänga eller låsa: P), beordrar pi servon att stänga lådan.

Allt arbete relaterat till bild-/videobearbetning, som blobdetektering, spårning av blobens väg, förbehandling av den sista ramen etc., görs via OpenCV-modulen.

För triggerhändelserna som nämns ovan skapas två cirklar i realtidvideon, en grön och en röd cirkel. När klumpen kommer in i området inom den gröna cirkeln, börjar programmet spåra banans väg efter den stunden så att personen kan börja skapa bokstaven. När klumpen når den röda cirkeln, stannar videon och den sista ramen överförs till en funktion som utför förbehandlingen på ramen för att göra den redo för förutspårning.

Jag har bifogat kodfilerna i detta steg. Gå gärna igenom det och gör eventuella ändringar som du vill.

OBS: Jag var tvungen att skapa två separata pythonfiler som arbetar med olika pythonversioner, en som importerar OpenCV -modulen (Python 2.7) och den andra som importerar sklearn -modulen (Python 3.5) för förutsägelse efter att den utbildade modellen laddades, eftersom min OpenCV installerades för versionen av Python 2.7 medan sklearn installerades för python 3.5. Så jag använde delprocessmodulen för att köra filen HarryPotterWandsklearn.py (för förutsägelse) från HarryPotterWandcv.py (för allt opencv -arbete och videoinspelning i realtid) och få utgången. På så sätt behöver jag bara köra HarryPotterWandcv.py -filen.

Steg 7: Lådans öppningsmekanism

Lådans öppningsmekanism
Lådans öppningsmekanism
Lådans öppningsmekanism
Lådans öppningsmekanism
Lådans öppningsmekanism
Lådans öppningsmekanism

Jag hade en gammal rödfärgad låda som jag använde för detta projekt.

För boxöppningsmekanismen:

  1. Jag varmlimmade en servo nära lådans bakre ände på en kartongbit nära lådans kant.
  2. Sedan tog jag en eka från hjulet i en cykel och varmlimde den på armen på servon.
  3. Den andra änden av ekern fästes på lådans lock med en tråd.
  4. Servo Positiv var ansluten till +5V Pin 2 på Raspberry Pi.
  5. Negativt för servo var anslutet till GND Pin 39.
  6. Servosignal var ansluten till Pin 12

Steg 8: Gör boxen till ett Harry Potter -tema

Making the Box Harry Potter tema
Making the Box Harry Potter tema
Making the Box Harry Potter tema
Making the Box Harry Potter tema
Making the Box Harry Potter tema
Making the Box Harry Potter tema

För att göra rutan med Harry Potter -tema skrev jag ut några färgade bilder av olika saker som Harry Potter -logotypen, The Hogwarts Crest, The Crest i vart och ett av de fyra husen etc. på glansigt A4 -ark och klistrade dem på rutan på olika platser.

Jag använde också ett gult färgat sammetskiva för att klippa remsor och klistrade in dem på locket för att ge lådan samma färg som Gryffindor House. Jag täckte insidan av locket och kartongen för servo med grönt sammetark. På insidan av locket klistrade jag in fler symboler och ett emblem som visar djuren som representerar varje hus i Hogwartsskolan.

Sedan fyllde jag äntligen alla mina Harry Potter -relaterade saker i lådan som inkluderade en Gryffindor -ljuddämpare, en dagbok med Hogwarts -uniformen och den äldsta Wand som användes i detta projekt: D

Rekommenderad: