INHOUDSOPGAWE:

Werklike Harry Potter wand met rekenaarvisie: 8 stappe (met foto's)
Werklike Harry Potter wand met rekenaarvisie: 8 stappe (met foto's)

Video: Werklike Harry Potter wand met rekenaarvisie: 8 stappe (met foto's)

Video: Werklike Harry Potter wand met rekenaarvisie: 8 stappe (met foto's)
Video: Hij werd gedwongen uit! ~ Boeiend verlaten huis van Nederlandse immigranten 2024, Julie
Anonim
Image
Image
Werklike werkende Harry Potter -toverstaf met behulp van rekenaarvisie
Werklike werkende Harry Potter -toverstaf met behulp van rekenaarvisie
Werklike werkende Harry Potter -toverstaf met behulp van rekenaarvisie
Werklike werkende Harry Potter -toverstaf met behulp van rekenaarvisie
Werklike werkende Harry Potter -toverstaf met behulp van rekenaarvisie
Werklike werkende Harry Potter -toverstaf met behulp van rekenaarvisie

"Enige voldoende gevorderde tegnologie kan nie van magie onderskei word nie" - Arthur C. Clarke

'N Paar maande gelede het my broer Japan besoek en het hy 'n ware towenaarservaring gehad in die towenaarswêreld van Harry Potter in die Universal Studios, moontlik gemaak deur die tegnologie van Computer Vision.

In die Wizarding World of Harry Potter in Universal Studios kan die toeriste op 'n sekere plek (waar die bewegingsopneemstelsel geïnstalleer is) 'regte towerkuns' verrig met behulp van spesiaal gemaakte toutjies met retro-reflekterende krale aan die punt. Die toverstaf kan gekoop word by 'n regte Ollivander's Shop, presies soos die in die Harry Potter -films, maar onthou: "Dit is die towerstaf wat die towenaar kies": P

As die persoon op 'n sekere plek 'n gebaar met 'n towerstaf uitvoer, herken die bewegingsopneemstelsel die gebaar en kom alle gebare ooreen met 'n sekere spel wat sekere aktiwiteite in die omliggende omgewing veroorsaak, soos om die fontein aan te skakel, ens.

Dus, in hierdie Instructable sal ek wys hoe u tuis 'n goedkoop en effektiewe bewegingsopname -stelsel kan skep om 'regte magie' uit te voer deur 'n boks met die waai van u towerstaf oop te maak: D met slegs 'n normale Night Vision Camera, elektronika, en 'n paar luislangkode met behulp van die OpenCV Computer Vision -biblioteek en masjienleer !!!

Stap 1: Die basiese idee en die vereiste onderdele

Die basiese idee en die vereiste onderdele
Die basiese idee en die vereiste onderdele
Die basiese idee en die vereiste onderdele
Die basiese idee en die vereiste onderdele
Die basiese idee en die vereiste onderdele
Die basiese idee en die vereiste onderdele
Die basiese idee en die vereiste onderdele
Die basiese idee en die vereiste onderdele

Die toverstafies wat by die Wizarding World of Harry Potter in Universal Studios gekoop is, het 'n retroreflekterende kraal aan hul punt. Daardie retroreflekterende krale weerspieël 'n groot hoeveelheid infrarooi lig wat deur die kamera in die bewegingsopneemstelsel uitgegee word. Dus, wat ons mense beskou as 'n nie-eiesoortige punt van die towerstaf wat in die lug beweeg, sien die bewegingsopneemstelsel as 'n helder blob wat maklik in die videostroom geïsoleer kan word en opgespoor kan word om die patroon wat deur die persoon geteken is, te herken en die vereiste aksie uit te voer. Al hierdie verwerkings vind intyds plaas en maak gebruik van rekenaarvisie en masjienleer.

'N Eenvoudige Night Vision -kamera kan gebruik word as ons kamera vir bewegingsopname, aangesien dit ook infrarooi lig uitblaas wat nie vir mense sigbaar is nie, maar duidelik gesien kan word met 'n kamera wat geen infrarooi filter het nie. Die videostroom van die kamera word dus gevoer in 'n framboospi met 'n luislangprogram met OpenCV wat gebruik word vir die opsporing, isolering en opsporing van die stokpunt. Dan gebruik ons die SVM (Simple Vector Machine) algoritme van Machine Learning om die patroon te herken en dienooreenkomstig die GPIO's van die framboos pi te beheer om 'n paar aktiwiteite uit te voer.

Die benodigde materiaal:

1) 'n Raspberry Pi 3 -model B en die nodige bykomstighede, soos sleutelbord en muis

2) Raspberry Pi NoIR (geen infrarooi) kameramodule

3) Harry Potter Wand met retroreflektor aan die punt: Moenie bekommerd wees as u nie een het nie. Enigiets met 'n retroreflektor kan gebruik word. U kan dus 'n stok-agtige stok gebruik en 'n retroreflektorband, verf of krale op die punt aanbring, en dit moet werk soos aangedui in die video deur William Osman: Watch The Video

4) 10 infrarooi LED's

5) 'n 3D -drukker en PLA -filament van u keuse

6) 12V - 1A muuradapter en DC -aansluiting

7) 'n Servomotor

8) 'n Ou boks en 'n spreuk uit die stuur van 'n siklus

9) 'n Warm lijmpistool

10) Afdrukke van 'n paar Harry Potter -verwante logo's en beelde op glanzende vel papier

11) Groen en geel fluweel velle.

LET WEL: ek het ook probeer om 'n ou gewone webcam vir nagvisie te gebruik deur die infrarooi filter daarvan te verwyder, maar ek het die lens beskadig/verplaas, wat die videokwaliteit baie beïnvloed het en ek kon dit nie gebruik nie. Maar as u 'n kans wil gee, kan u hierdie wonderlike instruksionele klik hier deurmaak

Stap 2: Installeer die OpenCV -module

Nou is dit tyd vir die eerste en waarskynlik die langste stap van hierdie hele projek: die installering en bou van die OpenCV -module in u Raspberry Pi.

Die installering van die afhanklikes vir die OpenCV -module neem nie veel tyd nie, maar die bouproses kan tot 2 tot 3 uur duur !! So, Buckle Up !!: P

Daar is baie tutoriale aanlyn wat u kan volg om die OpenCV 4.1.0 -module te installeer. Hier is die skakel van die een wat ek gevolg het: Klik hier

LET WEL: Ek beveel sterk aan dat u die OpenCV -module in die virtuele omgewing installeer, soos in die tutoriaal getoon, aangesien dit verskillende soorte konflikte kan voorkom as gevolg van die installering van afhanklikes van verskillende modules of terwyl u met verskillende weergawes van python werk.

Stap 3: Druk die kamerahouer af

Druk die kamerahouer af
Druk die kamerahouer af
Druk die kamerahouer af
Druk die kamerahouer af
Druk die kamerahouer af
Druk die kamerahouer af

Die NoIR picamera het geen infrarooi filter nie, daarom kan dit as 'n nagvisie -kamera gebruik word, maar dit het nog steeds nie 'n infrarooi ligbron nie. Al die nagvisie -kameras het hul eie infrarooi ligbron wat IR -strale in die donker uitblaas wat vir die blote oog onsigbaar is, maar die strale kan deur die kamera sonder infrarooi filter gesien word nadat dit deur enige voorwerp gereflekteer is.

Ons benodig dus basies 'n infrarooi ligbron en iets om die kamera op te sit. Hiervoor het ek 'n eenvoudige 3D -model ontwerp van 'n voorwerp waarop ons die kamera kan monteer, wat omring word deur 10 IR -leds in 'n sirkel. Die model is met SketchUp geskep en in ongeveer 40 minute met Black PLA gedruk.

Stap 4: Voltooi die kamera -houer

Die kamerahouer klaar
Die kamerahouer klaar
Die kamerahouer klaar
Die kamerahouer klaar
Die kamerahouer klaar
Die kamerahouer klaar

Nadat ek die model gedruk het, het ek dit eers geskuur met 'n sandpapier van 80 grint en daarna die IR -leds in hul gate geplaas volgens die diagram hierbo.

Ek het die leds op hul plek met warm gom vasgemaak en toe die positiewe en negatiewe leidrade van twee opeenvolgende leds saamgevoeg en dit dan gesoldeer om 'n reeks verbindings van die leds te skep.

Die positiewe lood van een led en die negatiewe lood van die led langsaan onderaan is ongesoldeer gelaat om die positiewe en negatiewe punte van die 12 volt muuradapter aan te sluit.

Stap 5: Die opgeleide model vir masjienleer

Vir die herkenning van die letter wat deur 'n persoon geteken is, het ek 'n masjienleermodel opgelei gebaseer op die Support Vector Machine (SVM) algoritme met behulp van 'n Datastel met handgeskrewe Engelse alfabette wat ek hier gevind het. SVM's is baie doeltreffende masjienleer -algoritmes wat in hierdie geval 'n hoë akkuraatheid kan gee, ongeveer 99,2% !! Lees meer oor SVM's

Die datastel is in die vorm van.csv -lêer wat 785 kolomme en meer as 300 000 rye bevat, waar elke ry 'n 28 x 28 -beeld verteenwoordig en elke kolom in die ry die waarde van die pixel vir die prent bevat, met 'n ekstra kolom in die begin wat die etiket bevat, 'n getal van 0 tot 25, elk wat ooreenstem met 'n Engelse letter. Deur middel van 'n eenvoudige python -kode het ek die data gesny om al die beelde te kry vir slegs die twee letters (A en C) wat ek wou hê, en 'n model daarvoor opgelei.

Ek het die opgeleide model (alphabet_classifier.pkl) aangeheg en ook die opleidingskode kan dit deurgaan of enige veranderinge aanbring om die model met verskillende letters op te lei of verskillende algoritmes te probeer. Nadat u die program uitgevoer het, stoor dit outomaties die opgeleide model in dieselfde gids waar u kode gestoor word.

Stap 6: Die kode wat alles laat gebeur

Die kode wat alles laat gebeur !!
Die kode wat alles laat gebeur !!

Nadat u die opgeleide model geskep het, is die laaste stap om 'n luislangprogram vir ons Raspberry Pi te skryf waarmee ons die volgende kan doen:

  • Toegang tot video van die picamera intyds
  • Ontdek en kyk na wit kolle (in hierdie geval punt van die towerstaf wat in nagvisie brand) in die video
  • Begin die pad van die bewegende blob in die video na 'n snellergebeurtenis (hieronder verduidelik)
  • Hou op om op te spoor na nog 'n snellergebeurtenis (hieronder verduidelik)
  • Gee die laaste raam terug met die patroon wat die gebruiker geteken het
  • Voer voorafverwerking op die raam uit, soos drempelwaarde, verwydering van geraas, grootte aanpas, ens.
  • Gebruik die verwerkte laaste raam vir voorspelling.
  • Voer 'n soort magie uit deur die GPIO's van die Raspberry Pi volgens die voorspelling te beheer

Vir hierdie projek het ek 'n Harry Potter -tema -boks geskep wat ek kan oop- en sluit met 'n servomotor wat deur die GPIO van die Raspberry Pi bestuur word. Aangesien letter 'A' staan vir 'Alohamora' (een van die bekendste spreuke uit die Harry Potter -films wat 'n towenaar toelaat om 'n slot oop te maak !!), as 'n persoon letter A met die towerstaf teken, beveel die pi die servo om maak die boks oop. As die persoon die letter 'C' trek wat staan vir close (aangesien ek nie kon dink aan 'n gepaste spel wat gebruik word om te sluit of te sluit nie: P), beveel die pi die servo om die boks te sluit.

Al die werk wat verband hou met beeld/video-verwerking, soos blob-opsporing, die spoor van die blob, voorafverwerking van die laaste raam, ens., Word deur die OpenCV-module gedoen.

Vir die snellergebeurtenisse hierbo genoem, word twee sirkels op die real-time video geskep, 'n groen en 'n rooi sirkel. As die blob die gebied binne die groen sirkel binnegaan, begin die program die pad wat die blob gevolg het na die oomblik volg, sodat die persoon die letter kan begin skep. As die blob die rooi sirkel bereik, stop die video en word die laaste raam oorgedra na 'n funksie wat die voorafverwerking op die raam uitvoer om dit gereed te maak vir voorspelling.

Ek het die kode lêers in hierdie stap aangeheg. Gaan gerus daardeur en maak enige veranderinge soos u wil.

LET WEL: ek moes twee afsonderlike python -lêers skep wat met verskillende python -weergawes werk, een wat OpenCV -module invoer (Python 2.7) en die ander wat die sklearn -module (Python 3.5) invoer vir voorspelling nadat die opgeleide model gelaai is, aangesien my OpenCV geïnstalleer is die Python 2.7 -weergawe terwyl die sklearn vir python 3.5 geïnstalleer is. Dus het ek die subprosesmodule gebruik om die lêer HarryPotterWandsklearn.py (vir voorspelling) van die HarryPotterWandcv.py (vir al die opencv -werk en intydse video -opname) uit te voer en die uitset daarvan te kry. Op hierdie manier hoef ek slegs die HarryPotterWandcv.py -lêer uit te voer.

Stap 7: Die oopmaakmeganisme van die boks

Die kassiemeganisme
Die kassiemeganisme
Die kassie -oopmaakmeganisme
Die kassie -oopmaakmeganisme
Die kassiemeganisme
Die kassiemeganisme

Ek het 'n ou rooi boks gehad wat ek vir hierdie projek gebruik het.

Vir die boks-oopmaakmeganisme:

  1. Ek het 'n servo naby die agterkant van die boks vasgeplak op 'n stuk karton naby die rand van die boks.
  2. Toe haal ek 'n spaak uit die stuurwiel en plak dit aan die arm van die servo vas.
  3. Die ander kant van die spaak is met 'n stuk draad aan die deksel van die boks vasgemaak.
  4. Servo positief was gekoppel aan +5V Pin 2 op Raspberry Pi.
  5. Die negatiewe van die servo is gekoppel aan die GND Pin 39.
  6. Die sein van die servo is aan pin 12 gekoppel

Stap 8: Maak die boks Harry Potter -tema

Maak die boks Harry Potter -tema
Maak die boks Harry Potter -tema
Maak die boks Harry Potter -tema
Maak die boks Harry Potter -tema
Maak die boks Harry Potter -tema
Maak die boks Harry Potter -tema

Om 'n Harry Potter -tema te maak, het ek 'n paar gekleurde beelde van verskillende dinge soos Harry Potter -logo, The Hogwarts Crest, The Crest van elk van die vier huise, ens op glansryke A4 -afgedruk en dit op die boks geplak op verskillende plekke.

Ek het ook 'n geelkleurige fluweelblad gebruik om repe te sny en op die deksel te plak om die boks dieselfde kleur te gee as die van die Gryffindor House. Ek het die binnekant van die deksel en die karton vir servo bedek met 'n groen fluweelvel. Aan die binnekant van die deksel het ek meer simbole geplak en 'n embleem wat die diere van elke huis van die Hogwarts -skool voorstel.

Uiteindelik het ek al my Harry Potter -verwante dinge in die boks gestop, insluitend 'n Gryffindor -demper, 'n dagboek met die Hogwarts -uniform en die Elder Wand wat in hierdie projek gebruik is: D

Aanbeveel: