Índice:
- Etapa 1: A ideia básica e as partes necessárias
- Etapa 2: Instale o Módulo OpenCV
- Etapa 3: imprimir o suporte da câmera
- Etapa 4: Concluindo a montagem da câmera
- Etapa 5: o modelo de aprendizado de máquina treinado
- Etapa 6: O código que faz tudo acontecer
- Etapa 7: O mecanismo de abertura da caixa
- Etapa 8: Fazendo a caixa com o tema Harry Potter
Vídeo: Varinha de Harry Potter de verdade usando visão computacional: 8 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
"Qualquer tecnologia suficientemente avançada é indistinguível da mágica" - Arthur C. Clarke
Alguns meses atrás, meu irmão visitou o Japão e teve uma experiência real de bruxaria no Mundo Mágico de Harry Potter nos Estúdios da Universal, possibilitada pela tecnologia de Visão por Computador.
No Mundo Mágico de Harry Potter nos Estúdios da Universal, os turistas podem realizar "mágica real" em certos locais (onde o sistema de captura de movimento está instalado) usando varinhas especialmente feitas com contas retro-reflexivas na ponta. As varinhas podem ser compradas em uma loja de Olivaras de verdade que são exatamente como as mostradas nos filmes de Harry Potter, mas lembre-se: "É a varinha que escolhe o mago": P
Nesses locais específicos, se a pessoa realizar um gesto específico com a varinha, o sistema de captura de movimento reconhece o gesto e todos os gestos correspondem a um determinado feitiço que causa certas atividades na área circundante, como ligar a fonte, etc.
Então, neste Instructable, irei mostrar como você pode criar um sistema de captura de movimento barato e eficaz em casa para realizar "mágica real" abrindo uma caixa com o toque de sua varinha: D usando apenas uma câmera Night Vision normal, alguns eletrônicos, e algum código python usando a biblioteca OpenCV Computer Vision e Machine Learning !!!
Etapa 1: A ideia básica e as partes necessárias
As varinhas que são compradas do Mundo Mágico de Harry Potter nos Estúdios da Universal têm uma conta retrorrefletiva na ponta. Essas contas retrorrefletivas refletem uma grande quantidade de luz infravermelha que é emitida pela câmera no sistema de captura de movimento. Então, o que nós, humanos, percebemos como uma ponta não tão distinta da varinha se movendo no ar, o sistema de captura de movimento percebe como uma bolha brilhante que pode ser facilmente isolada no fluxo de vídeo e rastreada para reconhecer o padrão desenhado pela pessoa e executar a ação necessária. Todo esse processamento ocorre em tempo real e utiliza Visão Computacional e Aprendizado de Máquina.
Uma simples câmera Night Vision pode ser usada como nossa câmera para a captura de movimento, uma vez que eles também emitem luz infravermelha que não é visível para os humanos, mas pode ser vista claramente com uma câmera sem filtro infravermelho. Assim, o fluxo de vídeo da câmera é alimentado em um raspberry pi que tem um programa python executando OpenCV que é usado para detectar, isolar e rastrear a ponta da varinha. Em seguida, usamos o algoritmo SVM (Simple Vector Machine) de Machine Learning para reconhecer o padrão desenhado e, consequentemente, controlar os GPIOs do raspberry pi para realizar algumas atividades.
Os materiais necessários:
1) Um Raspberry Pi 3 modelo B e os acessórios necessários, como teclado e mouse
2) Módulo de câmera Raspberry Pi NoIR (sem infravermelho)
3) Varinha Harry Potter com retrorrefletor na ponta: Não se preocupe se não tiver um. Qualquer coisa com um retrorrefletor pode ser usado. Então, você pode usar qualquer bastão tipo bastão e aplicar fita retrorrefletora, tinta ou miçangas na ponta e deve funcionar como mostrado no vídeo de William Osman: Assistir ao vídeo
4) 10 LEDs infravermelhos
5) Uma impressora 3D e filamento PLA de sua escolha
6) Adaptador de parede 12V - 1A e conector DC
7) Um servo motor
8) Uma velha caixa e um raio da roda de uma bicicleta
9) Uma pistola de cola quente
10) Impressões de alguns logotipos relacionados a Harry Potter e imagens em folha de papel brilhante
11) Lençóis de veludo verde e amarelo.
NOTA: Eu também tentei usar uma velha webcam normal para visão noturna removendo seu filtro infravermelho, mas acabei danificando / deslocando sua lente, o que afetou muito a qualidade do vídeo e não consegui usá-la. Mas se você quiser dar uma chance, você pode passar por este ótimo instrutível Clique Aqui
Etapa 2: Instale o Módulo OpenCV
Agora é a hora da primeira e provavelmente a mais longa etapa de todo o projeto: A instalação e construção do módulo OpenCV em seu Raspberry Pi.
A instalação das dependências para o módulo OpenCV não leva muito tempo, mas o processo de construção pode levar de 2 a 3 horas !! Então, Buckle Up !!: P
Existem muitos tutoriais online que você pode seguir para instalar o módulo OpenCV 4.1.0. Aqui está o link do que eu segui: Clique Aqui
NOTA: Eu recomendo fortemente instalar o módulo OpenCV em ambiente virtual como mostrado no tutorial, pois irá prevenir vários tipos de conflitos que podem acontecer devido à instalação de dependências de diferentes módulos ou ao trabalhar com diferentes versões de python.
Etapa 3: imprimir o suporte da câmera
A picamera NoIR não possui filtro infravermelho, portanto, pode ser usada como uma câmera de visão noturna, mas ainda não possui uma fonte de luz infravermelha. Todas as câmeras de visão noturna têm sua própria fonte de luz infravermelha, que emite raios infravermelhos no escuro, que são invisíveis a olho nu, mas os raios podem ser vistos pela câmera sem filtro infravermelho após serem refletidos de qualquer objeto.
Então, basicamente precisamos de uma fonte de luz infravermelha e algo para montar a câmera. Para isso projetei um modelo 3D simples de um objeto no qual poderíamos montar a câmera que será cercada por 10 leds IR em um círculo. O modelo foi criado com SketchUp e impresso com Black PLA em cerca de 40 minutos.
Etapa 4: Concluindo a montagem da câmera
Depois de imprimir o modelo, primeiro lixei-o com uma lixa 80 e depois comecei a colocar os leds IR em seus orifícios de acordo com o diagrama dado acima.
Prendi os leds em seus lugares com um pouco de cola quente e, em seguida, juntei os terminais positivo e negativo de dois leds consecutivos e os soldei para criar uma conexão em série dos leds.
O terminal positivo de um led e o terminal negativo do led próximo a ele na parte inferior foram deixados sem solda para conectar as extremidades positiva e negativa do adaptador de parede de 12 volts.
Etapa 5: o modelo de aprendizado de máquina treinado
Com o objetivo de reconhecer a letra desenhada por uma pessoa, treinei um modelo de aprendizado de máquina baseado no algoritmo Support Vector Machine (SVM) usando um conjunto de dados de alfabetos ingleses manuscritos que encontrei aqui. SVMs são algoritmos de aprendizado de máquina muito eficientes que podem fornecer uma alta precisão, cerca de 99,2% neste caso !! Leia mais sobre SVMs
O conjunto de dados está na forma de arquivo.csv que contém 785 colunas e mais de 300.000 linhas, onde cada linha representa uma imagem de 28 x 28 e cada coluna nessa linha contém o valor daquele pixel para aquela imagem com uma coluna adicional em o início que contém a etiqueta, um número de 0 a 25, cada um correspondendo a uma letra em inglês. Por meio de um código python simples, cortei os dados para obter todas as imagens apenas para as 2 letras (A e C) que queria e treinei um modelo para elas.
Anexei o modelo treinado (alphabet_classifier.pkl) e também o código de treinamento, fique à vontade para percorrê-lo ou fazer qualquer alteração para treinar o modelo com letras diferentes ou tentar algoritmos diferentes. Depois de executar o programa, ele salva automaticamente o modelo treinado no mesmo diretório onde seu código está salvo.
Etapa 6: O código que faz tudo acontecer
Depois de criar o modelo treinado, a etapa final é escrever um programa python para nosso Raspberry Pi que nos permita fazer o seguinte:
- Acesse o vídeo da picamera em tempo real
- Detectar e rastrear manchas brancas (neste caso, a ponta da varinha que acende na visão noturna) no vídeo
- Comece a traçar o caminho do blob em movimento no vídeo após algum evento de gatilho (explicado abaixo)
- Pare de rastrear após outro evento de gatilho (explicado abaixo)
- Retorna o último quadro com o padrão desenhado pelo usuário
- Execute o pré-processamento no quadro, como limiar, remoção de ruído, redimensionamento etc.
- Use o último quadro processado para previsão.
- Faça algum tipo de mágica controlando os GPIOs do Raspberry Pi de acordo com a predição
Para este projeto criei uma caixa com o tema Harry Potter que posso abrir e fechar usando um servo motor controlado pelo GPIO do Raspberry Pi. Como a letra 'A' significa 'Alohamora' (um dos feitiços mais famosos dos filmes de Harry Potter que permite a um mago abrir qualquer fechadura !!), se uma pessoa desenhar a letra A com a varinha, o pi comanda o servo para Abra a caixa. Se a pessoa desenhar a letra 'C' que significa fechar (pois não consegui pensar em nenhum feitiço apropriado usado para fechar ou travar: P), o pi comanda o servo para fechar a caixa.
Todo o trabalho relacionado ao processamento de imagem / vídeo, como detecção de blob, rastreamento do caminho do blob, pré-processamento do último frame etc., é feito através do módulo OpenCV.
Para os eventos de gatilho mencionados acima, dois círculos são criados no vídeo em tempo real, um círculo verde e um vermelho. Quando a bolha entra na região dentro do círculo verde, o programa começa a traçar o caminho percorrido pela bolha a partir daquele momento permitindo que a pessoa comece a criar a letra. Quando o blob atinge o círculo vermelho, o vídeo para e o último quadro é passado para uma função que realiza o pré-processamento no quadro para torná-lo pronto para predição.
Anexei os arquivos de código nesta etapa. Sinta-se à vontade para percorrê-lo e fazer as alterações que desejar.
NOTA: Tive que criar dois arquivos Python separados trabalhando com diferentes versões de Python, um que importa o módulo OpenCV (Python 2.7) e outro que importa o módulo sklearn (Python 3.5) para predição após carregar o modelo treinado, pois meu OpenCV foi instalado para a versão Python 2.7 enquanto o sklearn foi instalado para python 3.5. Então, usei o módulo de subprocesso para executar o arquivo HarryPotterWandsklearn.py (para predição) do HarryPotterWandcv.py (para todo o trabalho opencv e gravação de vídeo em tempo real) e obter sua saída. Dessa forma, só preciso executar o arquivo HarryPotterWandcv.py.
Etapa 7: O mecanismo de abertura da caixa
Eu tinha uma velha caixa vermelha em volta da qual usei para este projeto.
Para o mecanismo de abertura da caixa:
- Colei a quente um servo perto da extremidade traseira da caixa em um pedaço de papelão perto da borda da caixa.
- Então peguei um raio da roda de uma bicicleta e colei a quente no braço do servo.
- A outra extremidade do raio foi presa à tampa da caixa por meio de um pedaço de arame.
- O positivo do servo foi conectado ao pino 2 de + 5V no Raspberry Pi.
- O negativo do servo foi conectado ao pino 39 do GND.
- O sinal do servo foi conectado ao pino 12
Etapa 8: Fazendo a caixa com o tema Harry Potter
Para fazer a caixa com o tema Harry Potter, imprimi algumas imagens coloridas de várias coisas como o logotipo de Harry Potter, o brasão de Hogwarts, o brasão de cada uma das quatro casas etc. em uma folha A4 brilhante e colei-as na caixa em vários locais.
Também usei um lençol de veludo amarelo para cortar as tiras e colei na tampa para dar à caixa a mesma cor da Casa da Grifinória. Cobri o interior da tampa e o papelão para servo com folha de veludo verde. No interior da tampa colei mais símbolos e um emblema mostrando os animais que representam cada casa da Escola de Hogwarts.
Então, finalmente, coloquei todas as minhas coisas relacionadas a Harry Potter na caixa que incluía um cachecol da Grifinória, um diário com o uniforme de Hogwarts e a Varinha das Varinhas usadas neste projeto: D
Recomendado:
Hackeando o Hexbug Spider XL para adicionar visão computacional usando um smartphone Android: 9 etapas (com imagens)
Hackeando o Hexbug Spider XL para adicionar visão computacional usando um smartphone Android: Eu sou um grande fã do Hexbug & trade original; Spider. Eu possuí mais de uma dúzia e hackeei todos eles. Sempre que um de meus filhos vai para uma casa de amigos ’ festa de aniversário, o amigo ganha um Hexbug ™ aranha como um presente. Eu hackeei o ou
Reconhecimento de estrelas usando visão computacional (OpenCV): 11 etapas (com imagens)
Reconhecimento de estrelas usando visão computacional (OpenCV): Este instrutível irá descrever como criar um programa de visão computacional para identificar automaticamente padrões de estrelas em uma imagem. O método usa a biblioteca OpenCV (Open-Source Computer Vision) para criar um conjunto de cascatas HAAR treinadas que podem ser
Uso de sonar, Lidar e visão computacional em microcontroladores para auxiliar os deficientes visuais: 16 etapas
Usando Sonar, Lidar e Visão Computacional em Microcontroladores para Auxiliar os Deficientes Visuais: Eu quero criar uma "bengala" inteligente que pode ajudar as pessoas com deficiência visual muito mais do que as soluções existentes. A bengala será capaz de notificar o usuário sobre objetos na frente ou nas laterais, fazendo um ruído no headphon do tipo som surround
Sipeed MaiX Bit OpenMV Demos - Visão computacional: 3 etapas
Sipeed MaiX Bit OpenMV Demos - Computer Vision: Este é o segundo artigo da série sobre Sipeed AI na plataforma de microcontrolador Edge. Desta vez, escreverei sobre o MaiX Bit (link para Seeed Studio Shop), uma placa de desenvolvimento menor e pronta para a placa de ensaio. Suas especificações são muito semelhantes a
Cat-a-way - Sprinkler Cat-a-way com visão computacional: 6 etapas (com fotos)
Cat-a-way - Visão computacional Cat Sprinkler: Problema - Gatos usando seu jardim como banheiro Solução - Gaste muito tempo projetando um sprinkler para gatos com o recurso de upload automático do YouTube. Este não é um passo a passo, mas uma visão geral da construção e alguns code # BeforeYouCallPETA - Os gatos são