Inhoudsopgave:
- Stap 1: Het basisidee en de benodigde onderdelen
- Stap 2: Installeer de OpenCV-module
- Stap 3: De camerabevestiging afdrukken
- Stap 4: Afwerking van de cameramontage
- Stap 5: Het getrainde machine learning-model
- Stap 6: De code die het allemaal mogelijk maakt
- Stap 7: Het openingsmechanisme van de doos
- Stap 8: De doos Harry Potter-thema maken
Video: Echt werkende Harry Potter Wand met behulp van computervisie - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
"Elke voldoende geavanceerde technologie is niet te onderscheiden van magie" - Arthur C. Clarke
Een paar maanden geleden bezocht mijn broer Japan en had hij echte tovenaarservaring in de toverwereld van Harry Potter in de Universal Studios, mogelijk gemaakt door de technologie van Computer Vision.
In de Wizarding World of Harry Potter in Universal Studios kunnen toeristen op bepaalde locaties (waar het motion capture-systeem is geïnstalleerd) "echte magie" uitvoeren met behulp van speciaal gemaakte toverstokken met retroreflecterende kralen aan de punt. De toverstokken kunnen worden gekocht bij een echte Olivander's Shop, die precies hetzelfde zijn als die in de Harry Potter-films, maar onthoud: "Het is de toverstok die de tovenaar kiest":P
Als de persoon op die bepaalde locaties een bepaald gebaar met een toverstaf uitvoert, herkent het motion capture-systeem het gebaar en alle gebaren komen overeen met een bepaalde spreuk die bepaalde activiteiten in de omgeving veroorzaakt, zoals het aanzetten van de fontein enz.
Dus in deze Instructable zal ik laten zien hoe je thuis een goedkoop en effectief motion capture-systeem kunt maken om "echte magie" uit te voeren door een doos te openen met een beweging van je toverstok: D met alleen een normale nachtzichtcamera, wat elektronica, en wat python-code met behulp van de OpenCV Computer Vision-bibliotheek en Machine Learning !!!
Stap 1: Het basisidee en de benodigde onderdelen
De toverstokken die zijn gekocht in de Wizarding World van Harry Potter in Universal Studios, hebben een retroreflecterende kraal aan hun punt. Die retroreflecterende kralen reflecteren een grote hoeveelheid infrarood licht dat door de camera in het motion capture-systeem wordt afgegeven. als een heldere klodder die gemakkelijk in de videostream kan worden geïsoleerd en gevolgd om het door de persoon getrokken patroon te herkennen en de vereiste actie uit te voeren. Al deze verwerkingen vinden realtime plaats en maken gebruik van Computer Vision en Machine Learning.
Een eenvoudige nachtzichtcamera kan worden gebruikt als onze camera voor bewegingsregistratie, omdat ze ook infrarood licht uitstralen dat niet zichtbaar is voor mensen, maar duidelijk kan worden gezien met een camera zonder infraroodfilter. De videostream van de camera wordt dus ingevoerd in een Raspberry Pi met een python-programma met OpenCV dat wordt gebruikt voor het detecteren, isoleren en volgen van de toverstoktip. Vervolgens gebruiken we het SVM-algoritme (Simple Vector Machine) van Machine Learning om het getekende patroon te herkennen en dienovereenkomstig de GPIO's van de Raspberry Pi te besturen om enkele activiteiten uit te voeren.
De benodigde materialen:
1) Een Raspberry Pi 3 model B en de benodigde accessoires zoals toetsenbord en muis
2) Raspberry Pi NoIR (geen infrarood) cameramodule
3) Harry Potter Wand met retroreflector aan de punt: maak je geen zorgen als je er geen hebt. Alles met een retroreflector kan worden gebruikt. Je kunt dus elke toverstokachtige stok gebruiken en retroreflectortape, verf of kralen aan de punt aanbrengen en het zou moeten werken zoals getoond in de video van William Osman: Watch The Video
4) 10 infrarood LED's
5) Een 3D-printer en PLA-filament naar keuze
6) 12V - 1A wandadapter en DC-aansluiting
7) Een servomotor:
8) Een oude doos en een spaak uit het wiel van een fiets
9) Een heet lijmpistool
10) Afdrukken van enkele Harry Potter-gerelateerde logo's en afbeeldingen op glanzend vel papier
11) Groene en gele fluwelen lakens.
OPMERKING: ik heb ook geprobeerd een oude normale webcam te gebruiken voor nachtzicht door het infraroodfilter te verwijderen, maar uiteindelijk heb ik de lens beschadigd/verplaatst, wat de videokwaliteit enorm beïnvloedde en ik kon het niet gebruiken. Maar als je het een kans wilt geven, kun je deze geweldige instructable doornemen Klik hier
Stap 2: Installeer de OpenCV-module
Nu is het tijd voor de eerste en waarschijnlijk de langste stap van dit hele project: het installeren en bouwen van de OpenCV-module in je Raspberry Pi.
De installatie van de afhankelijkheden voor de OpenCV-module kost niet veel tijd, maar het bouwproces kan tot 2 tot 3 uur duren!! Dus, zet je schrap!!:P
Er zijn veel tutorials online die u kunt volgen om de OpenCV 4.1.0-module te installeren. Hier is de link van degene die ik volgde: Klik hier
OPMERKING: ik raad ten zeerste aan om de OpenCV-module in een virtuele omgeving te installeren, zoals weergegeven in de zelfstudie, omdat dit verschillende soorten conflicten zal voorkomen die kunnen optreden als gevolg van het installeren van afhankelijkheden van verschillende modules of tijdens het werken met verschillende versies van python.
Stap 3: De camerabevestiging afdrukken
De NoIR picamera heeft geen infraroodfilter en kan dus worden gebruikt als nachtzichtcamera, maar mist nog steeds een infraroodlichtbron. Alle nachtzichtcamera's hebben hun eigen infraroodlichtbron die IR-stralen in het donker uitstraalt die onzichtbaar zijn voor het blote oog, maar de stralen kunnen worden gezien door de camera zonder infraroodfilter nadat ze door een object zijn weerkaatst.
We hebben dus eigenlijk een infraroodlichtbron nodig en iets om de camera op te monteren. Hiervoor ontwierp ik een eenvoudig 3D-model van een object waarop we de camera konden monteren die we omgeven door 10 IR-leds in een cirkel. Het model is in ongeveer 40 minuten gemaakt met SketchUp en bedrukt met Black PLA.
Stap 4: Afwerking van de cameramontage
Na het printen van het model heb ik het eerst geschuurd met een 80 grit schuurpapier en ben toen begonnen met het plaatsen van de IR-leds in hun gaten volgens het bovenstaande diagram.
Ik zette de leds op hun plaats met wat hete lijm en voegde vervolgens de positieve en negatieve draden van twee opeenvolgende leds aan elkaar en soldeerde ze vervolgens om een serieschakeling van de leds te creëren.
De positieve draad van een led en de negatieve draad van de led ernaast in de bodem werden ongesoldeerd gelaten om de positieve en negatieve uiteinden van de 12 volt muuradapter met elkaar te verbinden.
Stap 5: Het getrainde machine learning-model
Om de door een persoon getekende brief te herkennen, heb ik een machine learning-model getraind op basis van het Support Vector Machine (SVM)-algoritme met behulp van een dataset van handgeschreven Engelse alfabetten die ik hier heb gevonden. SVM's zijn zeer efficiënte machine learning-algoritmen die een hoge nauwkeurigheid kunnen geven, in dit geval ongeveer 99,2%!! Lees meer over SVM's
De gegevensset heeft de vorm van een.csv-bestand dat 785 kolommen en meer dan 300.000 rijen bevat, waarbij elke rij een afbeelding van 28 x 28 vertegenwoordigt en elke kolom in die rij de waarde van die pixel voor die afbeelding bevat met een extra kolom in het begin dat het label bevat, een nummer van 0 tot 25, elk corresponderend met een Engelse letter. Via een eenvoudige python-code heb ik de gegevens gesneden om alle afbeeldingen te krijgen voor alleen de 2 letters (A en C) die ik wilde en een model voor hen getraind.
Ik heb het getrainde model (alphabet_classifier.pkl) bijgevoegd en ook de trainingscode, voel je vrij om er doorheen te gaan of wijzigingen aan te brengen voor het trainen van het model met verschillende letters of probeer verschillende algoritmen. Nadat het programma is uitgevoerd, wordt het getrainde model automatisch opgeslagen in dezelfde map waarin uw code is opgeslagen.
Stap 6: De code die het allemaal mogelijk maakt
Na het maken van het getrainde model, is de laatste stap het schrijven van een python-programma voor onze Raspberry Pi waarmee we het volgende kunnen doen:
- Toegang tot video van de picamera in realtime
- Detecteer en volg witte klodders (in dit geval de punt van de toverstaf die oplicht in nachtzicht) in de video
- Begin met het volgen van het pad van de bewegende blob in de video na een triggergebeurtenis (hieronder uitgelegd)
- Stop met traceren na een andere triggergebeurtenis (hieronder uitgelegd)
- Retourneer het laatste frame met het patroon dat door de gebruiker is getekend
- Voer voorbewerkingen uit op het frame, zoals drempelwaarden, ruisverwijdering, formaat wijzigen enz.
- Gebruik het verwerkte laatste frame voor voorspelling.
- Voer een soort magie uit door de GPIO's van de Raspberry Pi te besturen volgens de voorspelling
Voor dit project heb ik een Harry Potter-themadoos gemaakt die ik kan openen en sluiten met behulp van een servomotor die wordt bestuurd door de GPIO van de Raspberry Pi. Aangezien letter 'A' staat voor 'Alohamora' (een van de beroemdste spreuken uit de Harry Potter-films waarmee een tovenaar elk slot kan openen!!), als een persoon letter A met de toverstok trekt, geeft de pi de servo opdracht om open de doos. Als de persoon de letter 'C' tekent die staat voor close (omdat ik geen geschikte spreuk kon bedenken die werd gebruikt voor het sluiten of vergrendelen: P), geeft de pi de servo opdracht om de doos te sluiten.
Al het werk met betrekking tot beeld-/videoverwerking, zoals blobdetectie, het volgen van het pad van de blob, voorbewerking van het laatste frame enz., wordt gedaan via de OpenCV-module.
Voor de hierboven genoemde triggergebeurtenissen worden op de realtime video twee cirkels gemaakt, een groene en een rode cirkel. Wanneer de blob het gebied binnen de groene cirkel binnenkomt, begint het programma het pad te volgen dat de blob na dat moment heeft genomen, zodat de persoon kan beginnen met het maken van de brief. Wanneer de blob de rode cirkel bereikt, stopt de video en wordt het laatste frame doorgegeven aan een functie die de voorbewerking op het frame uitvoert om het klaar te maken voor voorspelling.
Ik heb de codebestanden in deze stap bijgevoegd. Voel je vrij om het door te nemen en eventuele wijzigingen aan te brengen zoals je wilt.
OPMERKING: ik moest twee afzonderlijke python-bestanden maken die met verschillende python-versies werken, een die de OpenCV-module (Python 2.7) importeert en een andere die de sklearn-module (Python 3.5) importeert voor voorspelling na het laden van het getrainde model, omdat mijn OpenCV was geïnstalleerd voor de Python 2.7-versie terwijl de sklearn was geïnstalleerd voor python 3.5. Dus gebruikte ik de subprocesmodule om het bestand HarryPotterWandsklearn.py (voor voorspelling) van de HarryPotterWandcv.py (voor al het opencv-werk en realtime video-opname) uit te voeren en de uitvoer te krijgen. Op deze manier hoef ik alleen het bestand HarryPotterWandcv.py uit te voeren.
Stap 7: Het openingsmechanisme van de doos
Ik had een oude roodgekleurde doos liggen die ik voor dit project heb gebruikt.
Voor het Box-Openingsmechanisme:
- Ik heb een servo aan de achterkant van de doos warm gelijmd op een stuk karton bij de rand van de doos.
- Toen nam ik een spaak van het wiel van een fiets en plakte deze warm op de arm van de servo.
- Het andere uiteinde van de spaak was met een stuk draad aan het deksel van de doos bevestigd.
- Positief van servo was verbonden met +5V Pin 2 op Raspberry Pi.
- Negatief van servo was verbonden met GND Pin 39.
- Signaal van servo was verbonden met Pin 12
Stap 8: De doos Harry Potter-thema maken
Om de doos Harry Potter-thema te maken, heb ik een aantal gekleurde afbeeldingen van verschillende dingen zoals Harry Potter-logo, het embleem van Zweinstein, het embleem van elk van de vier huizen enz. op glanzend A4-formaat afgedrukt en deze op verschillende punten op de doos geplakt. plaatsen.
Ik heb ook een geel gekleurd velours vel gebruikt om stroken te knippen en deze op het deksel te plakken om de doos dezelfde kleur te geven als die van het Griffoendor-huis. Ik bedekte de binnenkant van het deksel en het karton voor servo met groen fluwelen vel. Aan de binnenkant van het deksel heb ik meer symbolen geplakt en een embleem met de dieren die elk huis van de Zweinsteinschool voorstellen.
Toen stopte ik eindelijk al mijn Harry Potter-gerelateerde dingen in de doos, waaronder een Griffoendor-uitlaat, een dagboek met het Hogwarts-uniform en de Oudere toverstaf die in dit project werd gebruikt: D
Aanbevolen:
Bewegende portretten uit het echte leven uit Harry Potter! 11 stappen (met afbeeldingen)
Ontroerende portretten uit het echte leven uit Harry Potter!: "Geweldig! Verbazingwekkend! Dit is net magie!" - Gilderoy Lockhart Ik ben een grote Harry Potter-fan en een van de dingen waar ik altijd van heb gehouden in de Wizarding World zijn de bewegende portretten. Ik kwam Kyle Stewart-Frantz's Animated Pictur tegen
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
Maak het prikbord van uw school ECHT opvallend: 4 stappen
Maak het prikbord van je school ECHT opvallend: Maak een saai oud prikbord dat echt in het oog springt voor een goedkope prijs. Op een dag zat ik in de klas mijn werk te doen (hoesten, hoesten, praten, hoesten) en mijn natuurkundeleraar riep me naar buiten. Bugger, dacht ik. Maar nee, hij wilde eigenlijk dat ik hem bouwde
Hoe u gebruikersniveaus van NUMA toevoegt aan uw exemplaar van N met behulp van NumADD Firefox AddOn: 4 stappen
Gebruikersniveaus van NUMA toevoegen aan uw exemplaar van N NumADD Firefox-add-on gebruiken: Elke gebruiker van Metanet's N-database op gebruikersniveau NUMA weet hoe onhandig de interface is voor het kopiëren van door gebruikers gemaakte niveaus naar uw exemplaar van het spel. NumADD, elimineert de noodzaak van kopiëren en plakken en maakt het overzetten van niveaus het werk van één muisklik
Echt plezier hebben met Google Earth: 4 stappen
Veel plezier met Google Earth: google earth. een plek om dingen op te zoeken en spelletjes te spelen?