Taula de continguts:
- Pas 1: la idea bàsica i les parts necessàries
- Pas 2: instal·leu el mòdul OpenCV
- Pas 3: Impressió del muntatge de la càmera
- Pas 4: finalització del muntatge de la càmera
- Pas 5: el model d’aprenentatge automàtic entrenat
- Pas 6: el codi que fa que tot passi
- Pas 7: el mecanisme d'obertura de caixes
- Pas 8: Creació del tema de Harry Potter
Vídeo: Vareta de treball real de Harry Potter amb visió per ordinador: 8 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
"Qualsevol tecnologia prou avançada no es distingeix de la màgia" - Arthur C. Clarke
Fa uns mesos, el meu germà va visitar Japó i va tenir una experiència màgica real al món dels mags de Harry Potter als estudis universals que va ser possible gràcies a la tecnologia de Visió per Computador.
Al món dels mags de Harry Potter, a Universal Studios, els turistes poden realitzar "màgia real" en determinats llocs (on s'instal·la el sistema de captura de moviment) mitjançant varetes fetes especialment amb comptes retro-reflectants a la punta. Les varetes es poden comprar a una botiga d'Ollivander real que són exactament iguals a les que es mostren a les pel·lícules de Harry Potter, però recordeu: "És la vareta que tria l'assistent": P
En aquells llocs determinats, si la persona realitza un gest particular amb vareta, el sistema de captura de moviment reconeix el gest i tots els gestos corresponen a un encanteri determinat que provoca certes activitats a la zona circumdant, com encendre la font, etc.
Per tant, en aquest instructiu us mostraré com podeu crear un sistema de captura de moviment econòmic i eficaç a casa per realitzar "màgia real" obrint una caixa amb el toc de la vostra vareta: D utilitzant només una càmera de visió nocturna normal, alguns aparells electrònics, i algun codi python que utilitza la biblioteca OpenCV Computer Vision i Machine Learning !!!
Pas 1: la idea bàsica i les parts necessàries
Les varetes que es compren al món màgic de Harry Potter a Universal Studios tenen un cordó retroreflectant a la punta. Aquests comptes reflectants reflecteixen una gran quantitat de llum infraroja que la càmera emet en el sistema de captura de moviment. Per tant, el que percebem els humans com una punta no tan distintiva de la vareta que es mou en l'aire, el sistema de captura de moviment percep com un blob brillant que es pot aïllar fàcilment al flux de vídeo i fer un seguiment per reconèixer el patró dibuixat per la persona i executar l'acció necessària. Tot aquest processament es realitza en temps real i fa ús de la visió per computador i l’aprenentatge automàtic.
Una càmera senzilla de visió nocturna es pot utilitzar com a càmera per a la captura de moviment, ja que també exploten la llum infraroja que no és visible per als humans, però es pot veure clarament amb una càmera que no disposa de filtre infraroig. Per tant, el flux de vídeo de la càmera s’introdueix en un raspberry pi que té un programa python que executa OpenCV que s’utilitza per detectar, aïllar i rastrejar la punta de la vareta. A continuació, fem servir l'algorisme SVM (Simple Vector Machine) de Machine Learning per reconèixer el patró dibuixat i, en conseqüència, controlar els GPIO del raspberry pi per realitzar algunes activitats.
Els materials requerits:
1) Un Raspberry Pi 3 model B i els accessoris necessaris com el teclat i el ratolí
2) Mòdul de càmera Raspberry Pi NoIR (sense infrarojos)
3) Vareta de Harry Potter amb retroreflector a la punta: No us preocupeu si no en teniu. Es pot utilitzar qualsevol cosa amb un retroreflector. Per tant, podeu utilitzar qualsevol pal semblant a una vareta i aplicar cinta de retroreflector, pintura o perles a la punta i hauria de funcionar com es mostra al vídeo de William Osman: Mireu el vídeo
4) 10 LED d'infrarojos
5) Una impressora 3D i un filament PLA que trieu
6) Adaptador de paret de 12V - 1A i presa de corrent continu
7) Un servomotor
8) Una caixa vella i un radi de la roda d’un cicle
9) Una pistola de cola calenta
10) Impressions d'alguns logotips i imatges relacionades amb Harry Potter en full de paper brillant
11) Llençols de vellut verd i groc.
NOTA: També vaig provar d'utilitzar una càmera web antiga per a la visió nocturna eliminant el filtre d'infrarojos, però vaig acabar danyant / desplaçant l'objectiu, cosa que va afectar molt la qualitat del vídeo i no el vaig poder utilitzar. Però si voleu provar-ho, podeu passar per aquest fantàstic clic aquí
Pas 2: instal·leu el mòdul OpenCV
Ara és el moment del primer i probablement el pas més llarg de tot aquest projecte: la instal·lació i la construcció del mòdul OpenCV al vostre Raspberry Pi.
La instal·lació de les dependències del mòdul OpenCV no triga molt de temps, però el procés de compilació pot trigar de 2 a 3 hores !! Així doncs, Rellotgeu-vos !!: Pàg
Hi ha molts tutorials en línia que podeu seguir per instal·lar el mòdul OpenCV 4.1.0. Aquí teniu l’enllaç del que he seguit: Feu clic aquí
NOTA: Us recomano instal·lar el mòdul OpenCV a l'entorn virtual, tal com es mostra al tutorial, ja que evitarà diversos tipus de conflictes que poden passar a causa de la instal·lació de dependències de diferents mòduls o mentre es treballa amb diferents versions de python.
Pas 3: Impressió del muntatge de la càmera
La càmera NoIR no té filtre d’infrarojos, per tant es pot utilitzar com a càmera de visió nocturna, però encara no té una font de llum infraroja. Totes les càmeres de visió nocturna tenen la seva pròpia font de llum infraroja que fa saltar els raigs IR a la foscor, que són invisibles a simple vista, però els raigs poden ser vistos per la càmera sense filtre infrarojos després de reflectir-se en cap objecte.
Per tant, bàsicament necessitem una font de llum infraroja i alguna cosa per muntar la càmera. Per a això vaig dissenyar un senzill model en 3D d’un objecte sobre el qual podríem muntar la càmera que ens envoltaria de 10 leds IR en cercle. El model es va crear amb SketchUp i es va imprimir amb PLA negre en uns 40 minuts.
Pas 4: finalització del muntatge de la càmera
Després d’imprimir el model, primer el vaig polir amb un paper de sorra de granulat de 80 graus i després vaig començar a col·locar els leds IR als seus forats segons el diagrama anterior.
Vaig assegurar els leds al seu lloc amb una mica de cola calenta i després vaig unir els cables positius i negatius de dos leds consecutius i després els vaig soldar per crear una connexió en sèrie dels leds.
El cable positiu d’un led i el negatiu del led que hi ha al costat a la part inferior es van deixar sense soldar per connectar els extrems positius i negatius de l’adaptador de paret de 12 volts.
Pas 5: el model d’aprenentatge automàtic entrenat
Amb el propòsit de reconèixer la carta dibuixada per una persona, he format un model d’aprenentatge automàtic basat en l’algorisme de Vector Support Machine (SVM) mitjançant un conjunt de dades d’alfabets anglesos manuscrits que he trobat aquí. Els SVM són algoritmes d’aprenentatge automàtic molt eficients que poden donar una alta precisió, al voltant del 99,2% en aquest cas !! Llegiu més sobre SVM
El conjunt de dades té la forma d’un fitxer.csv que conté 785 columnes i més de 300.000 files on cada fila representa una imatge de 28 x 28 i cada columna d’aquesta fila conté el valor d’aquest píxel per a aquesta imatge amb una columna addicional a el principi que conté l'etiqueta, un número del 0 al 25, corresponent cadascun a una lletra anglesa. Mitjançant un simple codi python, vaig tallar les dades per obtenir totes les imatges només de les 2 lletres (A i C) que volia i vaig formar un model per a elles.
He adjuntat el model entrenat (alphabet_classifier.pkl) i també el codi d’entrenament, no dubteu a passar-lo o fer qualsevol canvi per entrenar el model amb diferents lletres o provar algorismes diferents. Després d’executar el programa, desa automàticament el model entrenat al mateix directori on s’ha desat el codi.
Pas 6: el codi que fa que tot passi
Després de crear el model entrenat, l'últim pas és escriure un programa python per al nostre Raspberry Pi que ens permeti fer el següent:
- Accediu al vídeo de la càmera fotogràfica en temps real
- Detecta i fa un seguiment de taques blanques (en aquest cas, la punta de la vareta que s’il·lumina en la visió nocturna) al vídeo
- Comenceu a rastrejar el camí del blob en moviment al vídeo després d'un esdeveniment activador (s'explica a continuació)
- Atureu el seguiment després d'un altre esdeveniment activador (s'explica a continuació)
- Torneu l'últim marc amb el patró dibuixat per l'usuari
- Realitzeu un processament previ al quadre, com ara llindars, eliminació de soroll, redimensionament, etc.
- Utilitzeu l'últim marc processat per a la predicció.
- Realitzeu algun tipus de màgia controlant els GPIO del Raspberry Pi segons la predicció
Per a aquest projecte vaig crear una caixa temàtica de Harry Potter que puc obrir i tancar mitjançant un servomotor controlat pel GPIO del Raspberry Pi. Com que la lletra "A" significa "Alohamora" (un dels encanteris més famosos de les pel·lícules de Harry Potter que permet a un mag obrir qualsevol pany !!), si una persona dibuixa la lletra A amb la vareta, el pi ordena al servo obriu la caixa. Si la persona dibuixa la lletra 'C' que significa tancar (ja que no se m'acut cap encanteri adequat que s'utilitzi per tancar o bloquejar: P), el pi ordena al servo que tanqui la caixa.
Tot el treball relacionat amb el processament d’imatges / vídeo, com la detecció de blob, el traçat del camí del blob, el pre-processament de l’últim fotograma, etc., es realitza a través del mòdul OpenCV.
Per als esdeveniments activadors esmentats anteriorment, es creen dos cercles al vídeo en temps real, un cercle verd i un vermell. Quan el blob entra a la regió dins del cercle verd, el programa comença a traçar el camí que ha seguit el blob després d’aquest moment, permetent a la persona començar a crear la lletra. Quan el blob arriba al cercle vermell, el vídeo s'atura i l'últim fotograma es passa a una funció que realitza el processament previ al fotograma per preparar-lo per a la predicció.
He adjuntat els fitxers de codi en aquest pas. No dubteu a passar-hi i fer els canvis que vulgueu.
NOTA: Vaig haver de crear dos fitxers Python diferents que funcionessin amb diferents versions de Python, un que importa el mòdul OpenCV (Python 2.7) i un altre que importa el mòdul sklearn (Python 3.5) per a la predicció després de carregar el model entrenat, ja que el meu OpenCV estava instal·lat per la versió de Python 2.7 mentre que sklearn estava instal·lat per a Python 3.5. Per tant, he utilitzat el mòdul de subprocés per executar el fitxer HarryPotterWandsklearn.py (per a la predicció) des de HarryPotterWandcv.py (per a tot el treball a cel obert i la gravació de vídeo en temps real) i obtenir la seva sortida. D'aquesta manera només he d'executar el fitxer HarryPotterWandcv.py.
Pas 7: el mecanisme d'obertura de caixes
Tenia al voltant una antiga caixa de color vermell que utilitzava per a aquest projecte.
Per al mecanisme d'obertura de caixa:
- Vaig enganxar un servo a la part posterior de la caixa sobre un tros de cartró a prop de la vora de la caixa.
- Després vaig agafar un radi de la roda d’un cicle i el vaig enganxar en calent al braç del servo.
- L'altre extrem del ràdio es va fixar a la tapa de la caixa mitjançant un tros de filferro.
- Positiu del servo es va connectar a + 5V Pin 2 a Raspberry Pi.
- El negatiu del servo es va connectar al pin 39 de GND.
- El senyal del servo estava connectat al pin 12
Pas 8: Creació del tema de Harry Potter
Per fer el tema de la caixa Harry Potter, vaig imprimir algunes imatges de colors de diverses coses com el logotip de Harry Potter, la cresta de Hogwarts, la cresta de cadascuna de les quatre cases, etc. en un full de mida A4 brillant i les vaig enganxar a la caixa de diverses llocs.
També vaig utilitzar un full de vellut de color groc per tallar tires i les vaig enganxar a la tapa per donar-los a la caixa el mateix color que el de la casa Gryffindor. Vaig tapar l’interior de la tapa i el cartró per al servo amb llençol de vellut verd. A l'interior de la tapa vaig enganxar més símbols i un emblema que mostrava els animals que representen cada casa de l'escola de Hogwarts.
Després, finalment, vaig ficar totes les coses relacionades amb Harry Potter a la caixa, que incloïa un silenciador de Gryffindor, un diari amb l’uniforme de Hogwarts i la vareta vella utilitzada en aquest projecte: D
Recomanat:
Hacking de l'Hexbug Spider XL per afegir visió per ordinador mitjançant un telèfon intel·ligent Android: 9 passos (amb imatges)
Hacking de l'Hexbug Spider XL per afegir visió per ordinador mitjançant un telèfon intel·ligent Android: sóc un gran fan de l'original Hexbug ™ Aranya. N’he posseït més d’una dotzena i els he piratejat a tots. Sempre que un dels meus fills va a un ’ festa d’aniversari, l’amic rep un Hexbug ™ aranya com a regal. He piratejat el o
Reconeixement d’estrelles mitjançant visió per ordinador (OpenCV): 11 passos (amb imatges)
Reconeixement d’estrelles mitjançant la visió per ordinador (OpenCV): aquesta instrucció us descriurà com crear un programa de visió per ordinador per identificar automàticament els patrons d’estrelles d’una imatge. El mètode utilitza la biblioteca OpenCV (Open-Source Computer Vision) per crear un conjunt de cascades HAAR entrenades que poden ser
Cat-a-way: aspersió per a gats de visió per ordinador: 6 passos (amb imatges)
Cat-a-way - Computer Vision Cat Sprinkler: Problema: els gats fan servir el vostre jardí com a vàter Solució: dediqueu massa temps a l’enginyeria d’un aspersor per a gats amb la funció de càrrega automàtica de YouTube No es tracta d’un pas a pas, sinó d’una visió general de la construcció i alguns codi # BeforeYouCallPETA - Els gats són
Cadira de rodes controlada per visió per ordinador amb maniquí: 6 passos (amb imatges)
Cadira de rodes controlada per visió per ordinador amb maniquí: projecte d’AJ Sapala, Fanyun Peng, Kuldeep Gohel, Ray LC. un raspberry pi que executa openCV mitjançant Processament
Braç del robot de visió per ordinador Arduino: 4 passos (amb imatges)
Arduino Computer Vision Robot Arm: La idea principal d’aquest instructiu era simplement fer un simple braç de robot 3DOF que recopilés objectes i els situés al lloc adequat. Materials: 4 servo SG90MDF 4mm Arduino NanoJumpers LaptopGlueNylon