Este projeto utiliza a webcam para detectar gestos com as mãos e mapeá-los para teclas do teclado, permitindo o controle de outras aplicações ou jogos de forma interativa.
- Detecção de até duas mãos em tempo real.
- Mapeamento de dedos levantados/abaixados para pressionamento de teclas.
- Diferenciação entre mão principal e secundária com ações distintas.
- Visualização da câmera com sobreposição dos pontos de referência das mãos.
- Otimização de performance ao desabilitar a visualização.
- Python 3
- Uma webcam conectada
-
Ambiente Virtual
É recomendado criar e ativar um ambiente virtual para isolar as dependências do projeto. O projeto já inclui uma pasta
env. Para ativá-la:# No Linux ou macOS source env/bin/activate
-
Instalar Dependências
Com o ambiente virtual ativado, instale as bibliotecas necessárias:
pip install opencv-python mediapipe pyautogui
-
Execute o script Python:
python gesto.py
-
Posicione suas mãos em frente à webcam. A janela "Reconhecimento Gestual - Mapeamento de Teclas" mostrará a imagem da câmera.
-
Para fechar o programa, pressione a tecla 'q' com a janela de visualização em foco, ou pressione Ctrl+C no terminal.
O programa mapeia os dedos para as seguintes teclas:
-
Mão Principal (geralmente a primeira detectada, marcada em verde):
- Polegar: Tecla
a - Indicador: Tecla
s - Médio: Tecla
d - Anelar: Tecla
f - Mínimo: Tecla
g
- Polegar: Tecla
-
Mão Secundária (marcada em vermelho):
- Polegar: Tecla
enter - Indicador: Seta para Cima (
up) - Médio: Seta para Baixo (
down)
- Polegar: Tecla
-
Alterar Teclas: Para mudar o mapeamento, modifique os dicionários
mapa_teclas_mao_principalemapa_teclas_mao_secundariano arquivogesto.py. -
Melhorar Performance: Para uma execução mais leve e com menor latência, você pode desativar a janela de visualização. Para isso, comente a linha que chama a função
mostrar_visualizacao()dentro do loop principal no final do arquivogesto.py.# ... dentro do loop while ... # Comente a linha abaixo para desativar a visualização e melhorar a performance. # mostrar_visualizacao(frame_rgb, resultados)