Este projeto utiliza visão computacional e aprendizado de máquina para reconhecer gestos de mão que representam números de 0 a 5, usando a webcam do computador. O sistema foi desenvolvido em Python, utilizando OpenCV, MediaPipe e scikit-learn.
- Descrição do Projeto
- Funcionamento do Código
- Treinamento do Modelo
- Como Executar
- Estrutura do Projeto
- Referências
O objetivo é detectar gestos de mão capturados pela webcam e classificá-los como números de 0 a 5. O projeto utiliza:
- MediaPipe para detecção dos pontos de referência (landmarks) da mão.
- OpenCV para captura e exibição das imagens da webcam.
- scikit-learn para treinar e utilizar o modelo de classificação dos gestos.
O arquivo main.py faz a captura da imagem da webcam, processa com MediaPipe para detectar a mão e extrai os landmarks.
A função extrair_landmarks (em utils/feature_extractor.py) transforma os landmarks em um vetor de características (features) que representa a posição dos pontos da mão.
O vetor de características é passado para o modelo treinado (carregado em classify.py), que retorna o número detectado e a confiança da predição.
O resultado é exibido na tela, sobreposto à imagem da webcam, e também impresso no console.
O treinamento do modelo é realizado em model/treinar_modelo.py:
- Coleta de Dados:
- Os dados dos gestos são coletados usando o script
utils/coletar_dados.py, que salva os landmarks em arquivos CSV na pastadata/. - Cada arquivo representa um gesto (ex:
gesto_0.csvpara o número 0).
- Os dados dos gestos são coletados usando o script
- Preparação dos Dados:
- Os arquivos CSV são lidos e combinados em um único dataset.
- Os dados são rotulados conforme o gesto correspondente.
- Treinamento:
- Um modelo de classificação (Nesse projeto foi utilizado o SVM.) é treinado usando scikit-learn.
- O modelo treinado é salvo em
model/classificador_gestos.pklusando joblib.
├── main.py # Código principal para detecção em tempo real
├── classify.py # Carrega o modelo e faz a classificação
├── requirements.txt # Dependências do projeto
├── README.md # Documentação
├── data/ # Dados coletados dos gestos
│ ├── gesto_0.csv
│ └── ...
├── model/
│ ├── classificador_gestos.pkl # Modelo treinado
│ └── treinar_modelo.py # Script de treinamento
└── utils/
├── coletar_dados.py # Script para coleta de dados
└── feature_extractor.py # Função para extrair features dos landmarks
Abra o terminal na pasta do projeto e execute:
pip install -r requirements.txtpython model/treinar_modelo.pypython main.pyA webcam será ativada e os gestos serão detectados em tempo real. Para sair, pressione q.
- Inicializa MediaPipe e OpenCV.
- Captura frames da webcam.
- Detecta landmarks da mão.
- Extrai features e classifica o gesto.
- Exibe o resultado na tela.
- Carrega o modelo treinado (
classificador_gestos.pkl). - Função
classificar_gestorecebe os landmarks e retorna o número do gesto e a confiança.
- Função para transformar os landmarks em vetor de características.
- Script para coletar dados dos gestos e salvar em CSV.
- Lê os dados dos gestos.
- Treina o modelo de classificação.
- Salva o modelo treinado.
Projeto desenvolvido para fins educacionais e demonstração de IA aplicada à visão computacional.