Cuprins:
- Pasul 1: Ideea de bază și părțile necesare
- Pasul 2: Instalați modulul OpenCV
- Pasul 3: Imprimarea suportului camerei
- Pasul 4: Finalizarea montării camerei
- Pasul 5: Modelul de învățare automată instruit
- Pasul 6: Codul care face ca totul să se întâmple
- Pasul 7: Mecanismul de deschidere a cutiei
- Pasul 8: Realizarea cutiei tematice Harry Potter
Video: Bagheta reală de lucru a lui Harry Potter folosind viziunea computerizată: 8 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
„Orice tehnologie suficient de avansată nu se distinge de magie” - Arthur C. Clarke
Cu câteva luni în urmă, fratele meu a vizitat Japonia și a avut o adevărată experiență de vrăjitor în lumea vrăjitoare a lui Harry Potter, la studiourile universale, făcută posibilă prin tehnologia computerului de viziune.
La Lumea vrăjitoare a lui Harry Potter din Universal Studios turiștii pot efectua „magie reală” în anumite locații (unde este instalat sistemul de captare a mișcării) folosind baghete realizate special cu margele retro-reflectorizante la vârf. Baghetele pot fi cumpărate de la un magazin Ollivander adevărat, care sunt exact ca cele prezentate în filmele Harry Potter, dar nu uitați: „Bagheta este cea care alege vrăjitorul”: P
În acele anumite locații, dacă persoana efectuează un anumit gest cu baghetă, sistemul de captare a mișcării recunoaște gestul și toate gesturile corespund unei anumite vraji care determină anumite activități în zona înconjurătoare, cum ar fi pornirea fântânii etc.
Deci, în acest instructabil voi arăta cum puteți crea un sistem de captare a mișcării ieftin și eficient acasă pentru a efectua „magie reală”, deschizând o cutie cu o mișcare a baghetei dvs. și ceva cod python folosind biblioteca OpenCV Computer Vision și Machine Learning !!!
Pasul 1: Ideea de bază și părțile necesare
Baghetele care sunt cumpărate din Lumea vrăjitoare a lui Harry Potter din Universal Studios, au o margine retroreflectantă la vârful lor. Aceste margele retroreflectante reflectă o cantitate mare de lumină în infraroșu, care este dată de aparatul foto în sistemul de captare a mișcării. ca un blob luminos care poate fi ușor izolat în fluxul video și urmărit pentru a recunoaște modelul desenat de persoană și a executa acțiunea necesară. Toate aceste procesări au loc în timp real și utilizează viziunea computerizată și învățarea automată.
O cameră simplă Night Vision poate fi utilizată ca cameră pentru captarea mișcării, deoarece, de asemenea, aruncă lumina infraroșie care nu este vizibilă pentru oameni, dar poate fi văzută clar cu o cameră care nu are filtru infraroșu. Deci, fluxul video de pe cameră este alimentat într-un pi zmeură care are un program python care rulează OpenCV care este utilizat pentru detectarea, izolarea și urmărirea vârfului baghetei. Apoi, folosim algoritmul SVM (Simple Vector Machine) de Machine Learning pentru a recunoaște modelul desenat și, în consecință, pentru a controla GPIO-urile de zmeură pi pentru a efectua unele activități.
Materialele necesare:
1) Un Raspberry Pi 3 model B și accesoriile necesare, cum ar fi tastatura și mouse-ul
2) Modul de cameră Raspberry Pi NoIR (fără infraroșu)
3) Bagheta Harry Potter cu retroreflector la vârf: Nu vă faceți griji dacă nu aveți unul. Poate fi folosit orice cu retroreflector. Deci, puteți utiliza orice baston de baghetă și puteți aplica bandă retroreflectorizantă, vopsea sau margele la vârf și ar trebui să funcționeze așa cum se arată în videoclipul de William Osman: Vizionați videoclipul
4) 10 LED-uri cu infraroșu
5) O imprimantă 3D și filament PLA la alegere
6) Adaptor de perete 12V - 1A și mufă de curent continuu
7) Un servomotor
8) O cutie veche și o rază de la roata unui ciclu
9) Un pistol de lipit fierbinte
10) Tipăriri ale unor logo-uri și imagini legate de Harry Potter pe o foaie de hârtie lucioasă
11) Foi de catifea verde și galbenă.
NOTĂ: Am încercat, de asemenea, să folosesc o cameră web obișnuită obișnuită pentru vizionarea pe timp de noapte, eliminând filtrul infraroșu, dar am sfârșit prin a-i deteriora / deplasa obiectivul, ceea ce a afectat foarte mult calitatea videoclipului și nu l-am putut folosi. Dar dacă doriți să faceți o lovitură, puteți parcurge acest minunat Click instructiv aici
Pasul 2: Instalați modulul OpenCV
Acum este timpul pentru primul și probabil cel mai lung pas al întregului proiect: instalarea și construirea modulului OpenCV în Raspberry Pi.
Instalarea dependențelor pentru modulul OpenCV nu durează mult, dar procesul de construire poate dura până la 2 până la 3 ore !! Deci, Cataramă !!: P
Există multe tutoriale online pe care le puteți urma pentru a instala modulul OpenCV 4.1.0. Iată linkul celui pe care l-am urmat: Faceți clic aici
NOTĂ: Vă recomandăm să instalați modulul OpenCV în mediul virtual așa cum se arată în tutorial, deoarece va preveni diferite tipuri de conflicte care pot apărea datorită instalării dependențelor de module diferite sau în timp ce lucrați cu diferite versiuni de python.
Pasul 3: Imprimarea suportului camerei
Picamera NoIR nu are filtru în infraroșu, prin urmare poate fi folosit ca cameră de vizionare nocturnă, dar îi lipsește încă o sursă de lumină în infraroșu. Toate camerele de vizionare nocturnă au propria sursă de lumină în infraroșu care explodează razele IR în întuneric, care sunt invizibile cu ochiul liber, dar razele pot fi văzute de cameră fără filtru infraroșu după ce sunt reflectate de la orice obiect.
Deci, practic avem nevoie de o sursă de lumină cu infraroșu și de ceva pe care să montăm camera. Pentru aceasta am proiectat un model 3D simplu al unui obiect pe care am putea monta camera pe care o vom înconjura de 10 led-uri IR într-un cerc. Modelul a fost creat cu SketchUp și imprimat cu Black PLA în aproximativ 40 de minute.
Pasul 4: Finalizarea montării camerei
După ce am tipărit modelul, l-am șlefuit mai întâi cu o hârtie de nisip cu granulație de 80 și apoi am început să așez ledurile IR în găurile lor, conform diagramei de mai sus.
Am asigurat ledurile în locul lor cu niște lipici fierbinți și apoi am unit cablurile pozitive și negative ale a două leduri consecutive împreună și apoi le-am lipit pentru a crea o conexiune în serie a ledurilor.
Conductorul pozitiv al unui led și cel negativ al ledului de lângă acesta în partea de jos au fost lăsate ne-lipite pentru a conecta capetele pozitive și negative de la adaptorul de perete de 12 volți.
Pasul 5: Modelul de învățare automată instruit
În scopul recunoașterii scrisorii desenate de o persoană, am pregătit un model de învățare automată bazat pe algoritmul Support Vector Machine (SVM) folosind un set de date de alfabete engleze scrise de mână pe care le-am găsit aici. SVM-urile sunt algoritmi de învățare automată foarte eficienți care pot oferi o precizie ridicată, în jur de 99,2% în acest caz !! Citiți mai multe despre SVM-uri
Setul de date este sub forma unui fișier.csv care conține 785 coloane și mai mult de 300 000 de rânduri în care fiecare rând reprezintă o imagine de 28 x 28 și fiecare coloană din acel rând conține valoarea pixelului respectiv pentru acea imagine cu o coloană suplimentară în începutul care conține eticheta, un număr de la 0 la 25, fiecare corespunzând unei litere englezești. Printr-un cod simplu Python, am tranșat datele pentru a obține toate imaginile doar pentru cele 2 litere (A și C) dorite și am format un model pentru ele.
Am atașat modelul instruit (alphabet_classifier.pkl) și, de asemenea, codul de antrenament, nu ezitați să îl parcurgeți sau să faceți modificări pentru antrenarea modelului cu litere diferite sau să încercați algoritmi diferiți. După rularea programului, acesta salvează automat modelul instruit în același director în care este salvat codul.
Pasul 6: Codul care face ca totul să se întâmple
După crearea modelului instruit, ultimul pas este să scriem un program python pentru Raspberry Pi care ne permite să facem următoarele:
- Accesarea videoclipului din camera foto în timp real
- Detectați și urmăriți bloburile albe (în acest caz vârful baghetei care se aprinde în vederea nocturnă) în videoclip
- Începeți să urmăriți calea blobului în mișcare în videoclip după un eveniment declanșator (explicat mai jos)
- Opriți urmărirea după un alt eveniment declanșator (explicat mai jos)
- Întoarceți ultimul cadru cu modelul desenat de utilizator
- Efectuați pre-procesare pe cadru, cum ar fi praguri, eliminarea zgomotului, redimensionarea etc.
- Utilizați ultimul cadru procesat pentru predicție.
- Efectuați o magie bună controlând GPIO-urile Raspberry Pi conform predicției
Pentru acest proiect am creat o cutie tematică Harry Potter pe care o pot deschide și închide folosind un servomotor care este controlat de GPIO al Raspberry Pi. Deoarece litera "A" înseamnă "Alohamora" (una dintre cele mai faimoase vraji din filmele Harry Potter care permite unui vrăjitor să deschidă orice încuietoare !!), dacă o persoană desenează litera A cu bagheta, pi comandă servo deschide Cutia. Dacă persoana desenează litera „C” care înseamnă „închidere” (așa cum nu m-aș putea gândi la vreo vrajă adecvată folosită pentru închidere sau blocare: P), pi comandă servo-ului să închidă cutia.
Toate lucrările legate de procesarea imaginii / video, cum ar fi detectarea blob-ului, urmărirea căii blob-ului, pre-procesarea ultimului cadru etc., se realizează prin intermediul modulului OpenCV.
Pentru evenimentele declanșatoare menționate mai sus, pe videoclipul în timp real sunt create două cercuri, un cerc verde și unul roșu. Când blob-ul intră în regiunea din cercul verde, programul începe să urmărească calea luată de blob după acel moment permițând persoanei să înceapă să creeze litera. Când blob-ul atinge cercul roșu, videoclipul se oprește și ultimul cadru este trecut la o funcție care efectuează pre-procesarea pe cadru pentru a-l pregăti pentru prediție.
Am atașat fișierele de cod în acest pas. Simțiți-vă liber să o parcurgeți și să faceți orice schimbări doriți.
NOTĂ: A trebuit să creez două fișiere python separate care funcționează cu versiuni diferite de python, unul care importă modulul OpenCV (Python 2.7) și altul care importă modulul sklearn (Python 3.5) pentru predicție după încărcarea modelului instruit, deoarece OpenCV a fost instalat pentru versiunea Python 2.7 în timp ce sklearn a fost instalat pentru python 3.5. Așadar, am folosit modulul de subproces pentru a rula fișierul HarryPotterWandsklearn.py (pentru predicție) din HarryPotterWandcv.py (pentru toate lucrările la deschidere și înregistrarea video în timp real) și pentru a obține ieșirea acestuia. În acest fel nu trebuie decât să rulez fișierul HarryPotterWandcv.py.
Pasul 7: Mecanismul de deschidere a cutiei
Aveam o cutie veche de culoare roșie în jurul căreia am folosit-o pentru acest proiect.
Pentru mecanismul de deschidere a cutiei:
- Am lipit la cald un servo lângă capătul din spate al cutiei pe o bucată de carton lângă marginea cutiei.
- Apoi am luat un spiț de pe roata unui ciclu și l-am lipit fierbinte de brațul servo-ului.
- Celălalt capăt al spiței a fost atașat la capacul cutiei folosind o bucată de sârmă.
- Pozitivul servo a fost conectat la + 5V Pin 2 pe Raspberry Pi.
- Negativul servo a fost conectat la pinul GND 39.
- Semnalul servo a fost conectat la pinul 12
Pasul 8: Realizarea cutiei tematice Harry Potter
Pentru realizarea tematică a cutiei Harry Potter, am imprimat câteva imagini colorate cu diverse lucruri, cum ar fi sigla Harry Potter, creasta de la Hogwarts, creasta fiecăreia dintre cele patru case etc., pe o foaie de format A4 lucios și le-am lipit pe cutie la locuri.
De asemenea, am folosit o foaie de catifea de culoare galbenă pentru a tăia fâșii și le-am lipit pe capac pentru a da cutiei aceeași culoare cu cea a Gryffindor House. Am acoperit interiorul capacului și cartonul pentru servo cu cearșaf verde de catifea. În interiorul capacului am lipit mai multe simboluri și o emblemă care arată animalele care reprezintă fiecare casă a Școlii Hogwarts.
Apoi, în cele din urmă, am umplut toate lucrurile mele legate de Harry Potter în cutie, care a inclus o toba de eșapament Gryffindor, un jurnal cu uniforma Hogwarts și bagheta bătrânului folosită în acest proiect: D
Recomandat:
Portrete din viața reală în mișcare de la Harry Potter !: 11 pași (cu imagini)
Portrete din viața reală în mișcare de la Harry Potter !: „Uimitor! Uimitor! Este la fel ca magia! &Quot; - Gilderoy Lockhart Sunt un mare fan al lui Harry Potter și unul dintre lucrurile pe care le-am iubit întotdeauna din Lumea vrăjitorilor sunt portretele mișcătoare. Am dat peste pictura animată a lui Kyle Stewart-Frantz
Hackarea Hexbug Spider XL pentru a adăuga viziune computerizată utilizând un smartphone Android: 9 pași (cu imagini)
Hacking Hexbug Spider XL pentru a adăuga viziune pe computer folosind un smartphone Android: Sunt un mare fan al Hexbug & trade original; Păianjen. Am deținut peste o duzină și le-am piratat pe toate. Oricând unul dintre fiii mei merge la un prieten ’ petrecere de ziua de naștere, prietenul primește un Hexbug ™ păianjenul ca cadou. Am spart sau
Recunoașterea stelelor folosind viziunea computerizată (OpenCV): 11 pași (cu imagini)
Recunoașterea stelelor folosind viziunea computerizată (OpenCV): această instrucțiune vă va descrie cum să creați un program de viziune computerizată pentru a identifica automat tiparele stelelor dintr-o imagine. Metoda folosește biblioteca OpenCV (Open-Source Computer Vision) pentru a crea un set de cascade HAAR instruite care pot fi
Construiește-ți propriul "" Cadru de lucru pentru autodistrugere al lui Banksy ": 4 pași
Construiește-ți propriul "" Cadru de artă de autodistrugere al lui Banksy ": Când Balloon Girl s-a auto-mărunțit după ce a lovit 1,4 milioane de dolari, producătorii noștri interiori au început să analizeze cum se face. Au existat 2 idei inițiale în mintea noastră: prima a fost aceea lamele erau fixate pe baza cadrului și pe două roți
Scaun cu rotile controlat prin viziune computerizată cu manechin: 6 pași (cu imagini)
Scaun cu rotile controlat prin viziune computerizată cu manechin: proiect de AJ Sapala, Fanyun Peng, Kuldeep Gohel, Ray LC. Instructibil de AJ Sapala, Fanyun Peng, Ray LC. Am creat un scaun cu rotile cu roți controlat de o placă Arduino, care este la rândul său controlată de un raspberry pi care rulează openCV prin Procesare