Este projeto é um sistema de autenticação facial que utiliza a webcam para detectar e reconhecer rostos, autenticando usuários com base em suas características faciais. O backend é desenvolvido em Python e está em deploy no Fly.io, permitindo que a autenticação funcione sem a necessidade de rodar o backend localmente. O frontend é desenvolvido com Vite.
- Captura de vídeo em tempo real através da webcam.
- Detecção e reconhecimento de rostos no quadro de vídeo.
- Codificação e comparação de rostos utilizando a biblioteca
face_recognition
. - Interface de usuário interativa desenvolvida com Vite.
- Integração com Firebase para armazenamento e autenticação de dados.
FACE-RECOGNITION-AUTHENTICATION/ ├── backend/ │ ├── Images/ │ ├── Resources/ │ ├── __pycache__/ │ ├── .env │ ├── AddDataToDatabase.py │ ├── app.py │ ├── backupCode.py │ ├── encodeFile.p │ ├── EncodeGenerator.py │ ├── firebase_config.py │ ├── README.md │ ├── requirements.txt │ └── serviceAccountKey.json ├── frontend/ │ ├── dist/ │ ├── node_modules/ │ ├── public/ │ ├── src/ │ ├── .env │ ├── .eslintrc.cjs │ ├── .firebaserc │ ├── .gitignore │ ├── firebase.json │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── README.md │ └── vite.config.js ├── .firebaserc ├── .gitignore ├── firebase_config.copy.py └── README.md
-
backend/
: Contém todos os arquivos relacionados ao backend.Images/
: Pasta para armazenamento de imagens.Resources/
: Pasta para recursos adicionais.app.py
: Script principal que executa a API do backend.encodeFile.p
: Arquivo com codificações de rostos previamente conhecidas.firebase_config.py
: Configuração do Firebase.requirements.txt
: Arquivo com as dependências do backend.serviceAccountKey.json
: Chave de conta de serviço para o Firebase.
-
frontend/
: Contém todos os arquivos relacionados ao frontend.src/
: Código fonte do frontend.index.html
: Arquivo HTML principal.vite.config.js
: Configuração do Vite.package.json
: Gerenciamento de pacotes e dependências do frontend.
- Python 3.6+
- Node.js e npm
opencv-python
face_recognition
numpy
flask
firebase-admin
vite
react
firebase
-
Clone o repositório:
git clone https://github.com/usuario/face-recognition-auth.git
-
Navegue para o diretório do backend:
cd face-recognition-auth/backend
-
Crie um ambiente virtual e ative-o:
python -m venv venv source venv/bin/activate # No Windows use `venv\Scripts\activate`
-
Instale as dependências:
pip install -r requirements.txt
-
Execute o script principal:
python app.py
-
Navegue para o diretório do frontend:
cd ../frontend
-
Instale as dependências:
npm install
-
Execute o servidor de desenvolvimento:
npm run dev
- Certifique-se de que sua webcam está conectada.
- Execute o backend conforme descrito acima.
- Execute o frontend conforme descrito acima.
- Acesse o sistema através do navegador na URL fornecida pelo Vite.
- Para adicionar mais imagens de usuários, coloque as novas imagens na pasta
backend/Images
. [OUTDATED] - Para adicionar mais imagens de usuários entre nesse link.
- As codificações de rostos são carregadas a partir do arquivo
encodeFile.p
. Você pode atualizar este arquivo com novas codificações conforme necessário.
-
Certifique-se de que o arquivo
.env
contém as variáveis de ambiente necessárias para a configuração do Firebase. Se você estiver em um ambiente de desenvolvimento, você pode criar um arquivo.env
com o seguinte conteúdo:FIREBASE_API_KEY=YOUR_FIREBASE_API_KEY FIREBASE_AUTH_DOMAIN=YOUR_FIREBASE_AUTH_DOMAIN FIREBASE_PROJECT_ID=YOUR_FIREBASE_PROJECT_ID FIREBASE_STORAGE_BUCKET=YOUR_FIREBASE_STORAGE_BUCKET FIREBASE_MESSAGING_SENDER_ID=YOUR_FIREBASE_MESSAGING_SENDER_ID FIREBASE_APP_ID=YOUR_FIREBASE_APP_ID
-
O backend está configurado para escutar alterações na coleção
Person
do Firebase e atualizar as codificações de rostos automaticamente.
-
Backend:
- Adicionada a funcionalidade de registrar a data e hora de autenticação com o campo
autenticado_em
. - A resposta da API agora inclui
autenticado_em
com a data e hora da autenticação.
- Adicionada a funcionalidade de registrar a data e hora de autenticação com o campo
-
Frontend:
- Atualizado para exibir o campo
autenticado_em
com a data e hora da autenticação.
- Atualizado para exibir o campo
[
{
"id": "user1",
"email": "user1@example.com",
"name": "User One",
"location": [0, 0, 100, 100],
"autenticado_em": "2024-07-11 15:45:30"
}
]