Sistema avançado de comparação facial com interface moderna e algoritmos de reconhecimento de alta precisão.
- 🎯 Sobre o Projeto
- ✨ Características
- 🛠️ Tecnologias
- 📋 Pré-requisitos
- 🚀 Instalação
▶️ Como Executar- 🎮 Como Usar
- 🔧 Configuração
- 📂 Estrutura do Projeto
- 🌐 API Endpoints
- 🛡️ Segurança
- 🔍 Solução de Problemas
- 🤝 Contribuição
- 📄 Licença
O Comparador Facial Painho Trampos é uma aplicação web completa que utiliza tecnologias de visão computacional para comparar rostos e calcular similaridades entre pessoas. O sistema permite upload de uma imagem base e até 250 imagens de comparação, processando-as em tempo real e retornando resultados ordenados por porcentagem de similaridade.
- Design dark profissional
- Cards de resultado com fundo claro para melhor contraste
- Animações suaves e responsividade total
- Sistema de autenticação integrado
- Sistema de login com senha personalizada
- Sessão persistente com localStorage
- Controle de acesso total à aplicação
- Proteção contra uso não autorizado
- Upload de imagem base obrigatória
- Suporte a até 250 imagens de comparação simultânea
- Validação automática de formatos (PNG, JPG)
- Limite de 10MB por imagem
- Preview instantâneo das imagens carregadas
- Detecção facial automatizada com OpenCV
- Algoritmo de extração de características faciais
- Cálculo de similaridade usando Cosine Similarity
- Processamento otimizado para múltiplas imagens
- Exibição da imagem base como referência
- Grid organizado com thumbnails das comparações
- Porcentagens de similaridade em tempo real
- Ordenação automática por maior similaridade
- Badges visuais indicando qualidade da correspondência
- Interface intuitiva e responsiva
- Barra de progresso durante uploads
- Mensagens de erro em português
- Sistema de reset para nova comparação
- Animações e efeitos visuais modernos
- FastAPI - Framework web moderno e rápido
- Python 3.8+ - Linguagem principal
- OpenCV - Processamento de imagem e detecção facial
- scikit-learn - Algoritmos de machine learning
- PIL (Pillow) - Manipulação de imagens
- Motor - Driver assíncrono para MongoDB
- Pydantic - Validação de dados
- React 19 - Biblioteca JavaScript
- Tailwind CSS - Framework de estilos
- shadcn/ui - Componentes UI modernos
- Axios - Cliente HTTP
- Lucide React - Ícones
- MongoDB - Banco NoSQL para metadados
- Uvicorn - Servidor ASGI
- CORS - Configuração de políticas de origem
Antes de começar, certifique-se de ter instalado em seu PC:
- Python 3.8 ou superior ✅ (já instalado conforme solicitado)
- Node.js 16+ e npm/yarn - Download Node.js
- MongoDB - Download MongoDB
- Git - Download Git
python --version # Deve mostrar Python 3.8+
node --version # Deve mostrar Node 16+
npm --version # Deve mostrar npm 8+
mongod --version # Deve mostrar MongoDB 4.4+git clone https://github.com/seu-usuario/comparador-facial-painho-trampos.git
cd comparador-facial-painho-trampos# Navegar para pasta do backend
cd backend
# Criar ambiente virtual
python -m venv venv
# Ativar ambiente virtual
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activatepip install -r requirements.txt# Criar arquivo .env na pasta backend
cp .env.example .env
# Editar o arquivo .env com suas configurações:
# MONGO_URL=mongodb://localhost:27017
# DB_NAME=facial_comparison
# CORS_ORIGINS=http://localhost:3000# Navegar para pasta do frontend
cd ../frontend
# Instalar dependências
npm install
# ou
yarn install# Criar arquivo .env na pasta frontend
cp .env.example .env
# Editar o arquivo .env:
# REACT_APP_BACKEND_URL=http://localhost:8001# Windows (como serviço):
net start MongoDB
# Linux/Mac:
sudo systemctl start mongod
# ou
mongod --dbpath /caminho/para/dados# Conectar ao MongoDB
mongo
# ou
mongosh
# Verificar se conectou (deve mostrar prompt do MongoDB)cd backend
# Ativar ambiente virtual
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# Executar servidor FastAPI
uvicorn server:app --host 0.0.0.0 --port 8001 --reloadcd frontend
# Executar aplicação React
npm start
# ou
yarn start# Criar script start.sh (Linux/Mac) ou start.bat (Windows)
# start.sh:
#!/bin/bash
cd backend && source venv/bin/activate && uvicorn server:app --host 0.0.0.0 --port 8001 --reload &
cd frontend && npm start &
wait
# Executar:
chmod +x start.sh
./start.sh- Frontend: http://localhost:3000
- Backend API: http://localhost:8001
- Documentação API: http://localhost:8001/docs
- Abra seu navegador em
http://localhost:3000 - Você verá a tela de login com tema dark
- Senha padrão:
painho123 - Digite a senha completa e clique em "Entrar"
- Clique na seção "Imagem Base"
- Selecione uma imagem com pelo menos um rosto visível
- A imagem aparecerá como preview
- Clique na seção "Imagens para Comparação"
- Selecione até 250 imagens para comparar
- Thumbnails aparecerão na interface
- Clique no botão "Comparar Rostos"
- Aguarde o processamento (barra de progresso aparecerá)
- Resultados serão exibidos automaticamente
- Imagem Base: Mostrada como referência
- Grid de Resultados: Cards com imagens e porcentagens
- Ordenação: Por maior similaridade primeiro
- Badges: Indicam qualidade da correspondência
- Resetar: Limpa tudo para nova comparação
- Sair: Volta para tela de login
// frontend/src/App.js - linha ~16
const VALID_PASSWORD = 'suanovaSenha'; // Altere aqui# backend/server.py - linha ~160
if len(comparison_images) > 250: # Altere o número aqui# backend/server.py - função image_to_base64
def image_to_base64(image_array, max_size=(150, 150)): # Altere o tamanho# backend/.env
MONGO_URL=mongodb://localhost:27017
DB_NAME=facial_comparisoncomparador-facial-painho-trampos/
├── 📁 backend/
│ ├── 📄 server.py # Servidor FastAPI principal
│ ├── 📄 requirements.txt # Dependências Python
│ ├── 📄 .env # Variáveis de ambiente backend
│ └── 📁 venv/ # Ambiente virtual Python
├── 📁 frontend/
│ ├── 📁 src/
│ │ ├── 📄 App.js # Componente principal React
│ │ ├── 📄 App.css # Estilos personalizados
│ │ ├── 📄 index.js # Ponto de entrada React
│ │ └── 📁 components/
│ │ └── 📁 ui/ # Componentes shadcn/ui
│ ├── 📁 public/
│ │ └── 📄 index.html # Template HTML
│ ├── 📄 package.json # Dependências Node.js
│ ├── 📄 tailwind.config.js # Configuração Tailwind
│ └── 📄 .env # Variáveis de ambiente frontend
├── 📄 README.md # Este arquivo
├── 📄 .gitignore # Arquivos ignorados pelo Git
└── 📄 LICENSE # Licença MIT
- Não requer API key (autenticação via frontend)
{
"message": "Face Comparison API"
}Parâmetros:
base_image: Arquivo de imagem (obrigatório)comparison_images: Lista de arquivos (até 250)
Resposta:
{
"base_image_has_face": true,
"base_image_data": "data:image/jpeg;base64,/9j/4AAQ...",
"results": [
{
"image_index": 0,
"similarity_percentage": 87.5,
"has_face": true,
"image_data": "data:image/jpeg;base64,/9j/4AAQ...",
"error_message": null
}
],
"total_images": 5,
"processing_time": 2.34
}Para criar registros de status (metadados)
Para recuperar registros de status
- ✅ Autenticação obrigatória via senha
- ✅ Validação de tipos de arquivo
- ✅ Limite de tamanho de arquivo (10MB)
- ✅ Limite de quantidade de arquivos (250)
- ✅ Sanitização de dados de entrada
- ✅ CORS configurado adequadamente
- ✅ Processamento temporário (imagens não são salvas)
- Altere a senha padrão em produção
- Configure HTTPS em produção
- Implemente rate limiting se necessário
- Monitore uso de recursos do servidor
# Certifique-se de ativar o ambiente virtual
cd backend
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# Reinstalar dependências
pip install -r requirements.txt# Verificar se MongoDB está rodando
# Windows:
net start MongoDB
# Linux/Mac:
sudo systemctl start mongod
# Verificar conexão:
mongo --eval "db.runCommand('ping')"# Encontrar processo usando a porta
netstat -tulpn | grep :8001
# ou
lsof -i :8001
# Matar processo
kill -9 PID_DO_PROCESSO# Instalar dependências do sistema (Ubuntu/Debian):
sudo apt-get update
sudo apt-get install python3-opencv
# Windows: Reinstalar via pip
pip uninstall opencv-python
pip install opencv-python# Limpar cache do npm
npm cache clean --force
# Deletar node_modules e reinstalar
rm -rf node_modules package-lock.json
npm install- Certifique-se de que a imagem tem pelo menos um rosto visível
- Use imagens com boa qualidade e iluminação
- Evite imagens muito pequenas ou de baixa resolução
Contribuições são sempre bem-vindas! Para contribuir:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Add: Nova feature incrível') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
- Mantenha o código limpo e documentado
- Teste suas alterações localmente
- Siga os padrões de código existentes
- Atualize a documentação se necessário
- OpenCV Haar Cascades: Detecta rostos em tempo real
- Pré-processamento: Conversão para escala de cinza
- Parâmetros otimizados: scaleFactor=1.1, minNeighbors=5
- Tamanho mínimo: 30x30 pixels para detecção
- Extração de características: Histogramas de 256 bins
- Normalização: Redimensionamento para 128x128 pixels
- Métrica: Cosine Similarity para comparação
- Range: 0-100% de similaridade
- Thumbnails: Imagens reduzidas para 150x150px
- Processamento paralelo: Múltiplas imagens simultaneamente
- Compressão: Base64 com qualidade JPEG 80%
- Memória: Processamento temporário sem armazenamento
- Design System: Tailwind CSS + shadcn/ui
- Tema: Dark mode profissional
- Animações: Hover effects e transições suaves
- Responsividade: Mobile-first design
- Acessibilidade: Focus states e navegação por teclado
- Autenticação: Senha única configurável
- Sessão: Persistent storage com localStorage
- Logout: Limpeza completa de dados
- Proteção: Todas as rotas protegidas
- Tempo de processamento: Medição automática
- Estatísticas: Total de imagens, rostos detectados
- Logs: Console logging para debugging
- Errors: Tratamento gracioso com mensagens em português
- Comparar foto de pessoa com banco de imagens
- Identificar duplicatas em coleções de fotos
- Verificação de identidade básica
- Agrupar fotos por pessoas similares
- Encontrar todas as fotos de uma pessoa específica
- Limpar duplicatas de álbuns familiares
- Comparar suspeitos com banco de dados
- Análise forense de imagens
- Pesquisa acadêmica em reconhecimento facial
- Sistema de presença baseado em fotos
- Controle de acesso por reconhecimento
- Marketing personalizado por demografia
Este projeto está licenciado sob a MIT License. Veja o arquivo LICENSE para mais detalhes.
MIT License
Copyright (c) 2025 Painho Trampos
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- Projeto: Comparador Facial Painho Trampos
- Versão: 1.0.0
- Status: ✅ 100% Funcional
- Última atualização: Janeiro 2025
- Abra uma Issue no GitHub para bugs
- Use Discussions para perguntas gerais
- Pull Requests são bem-vindos!
⭐ Se este projeto te ajudou, não esqueça de dar uma estrela no GitHub!