Skip to content

Projeto final disciplina Técnicas de Programação 1

Notifications You must be signed in to change notification settings

mashiro11/trabalhoTP1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

projetoTP1_2

Projeto final disciplina Técnicas de Programação 1

Documentação

A documentação foi gerada utilizando a ferramenta Doxygen, podendo ser acessada pelo link:

https://mashiro11.github.io/html/

Introdução

Este projeto consiste em um sistema de controle de acesso para ser utilizado na entrada dos Laboratórios de Informática (Linf).

Sendo que no momento do cadastramento de usuário são passados suas informações e logo após o sistema capta algumas fotos do rosto dessa pessoa com diferentes expressões faciais para que seja feita a validação de acesso.

O reconhecimento facial é uma das técnicas mais utilizadas na biometria tanto para a segurança da informação como para segurança de nossa sociedade.

Este trabalho implementa um software que reconhece uma imagem retirada através de um webcam ou câmera para reconhecer suas características e compará-las com as de um banco de dados.

Foi utilizada a biblioteca OpenCV, biblioteca para a utilização de processamento de imagens de grande eficácia e por obter excelentes resultados no reconhecimento de características utilizando os HaarCascade.

O software foi desenvolvido em c++.

Requisitos Linux:

Versão testada Ubuntu 16.04 LTS

Compilador :

g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

Para compilar no ambiente Linux, utilize a branch "ubuntu", com a seguinte linha de compilação: g++ src/Main.cpp src/Usuario.cpp src/Reserva.cpp src/GerenteBD.cpp src/GerenteLogin.cpp src/SistemaLinf.cpp -I include/ -o ProjetoTP1 pkg-config --cflags --libs opencv -std=c++11

Copyright (C) 2015 Free Software Foundation, Inc.

Opencv 3.2.0-dev:

Fonte: https://github.com/opencv/opencv

Modulos extra: https://github.com/opencv/opencv_contrib

Requisitos Windows

Compilador G++

Baixe o MinGW acessando SourceForge, clique depois em Download e espere o download finalizar, execute o aplicativo. Prossiga com Next e escolha a configuração adequada, como uma versão mais recente e a arquitetura compatível. Clique em Next até finalizar a instalação. Será mostrado uma tela inicial mostrando informações do Projeto. Prossiga até chegar em uma tela para escolher os recursos que serão instalados, selecione mingw32-base e o mingw32-gcc-g++. Depois disso, clique em Instalattion > Apply Changes.

Agora será necessário adicionar o diretório de binários do MinGW na Path do Windows, para isso, clique no Iniciar, e depois clique com o botão direito em Computador, e em seguida em Propriedades. No lado esquerdo clique em Configurações avançadas do sistema. Clique agora em variáveis de ambiente. Ache a variável PATH, e clique em editar, no fim dela, adicione um “;” (ponto e vírgula), e coloque o diretório dos binários que foram instalados com o MinGW (geralmente em C:\Program Files (x86)\mingw-w64). Para testar se deu certo, abra o Prompt de Comando e digite “g++”.

.NET Framework

Será utilizado nas próximas instalações o .NET Framework. Baixe acessando Microsoft, escolha uma versão 4.3 ou superior e clique em Download. Execute e aceite os termos de contrato e em seguida clique em instalar, espere o download e a instalação finalizar.

OpenCV

Baixe o OpenCV versão 2.4.* de preferência ou acesse diretamente pela página do SourceForge que irá fazer o Download automaticamente. Depois abra e clique em extrair.

Agora será necessário adicionar o diretório de binários do OpenCV na Path do Windows, para isso, clique no Iniciar, e depois clique com o botão direito em Computador, e em seguida em Propriedades. No lado esquerdo clique em Configurações avançadas do sistema. Clique agora em variáveis de ambiente. Em variáveis do sistema clique em Novo, defina o nome da variável como "OPENCV_DIR" sem aspas e o valor da variável como o diretório da build do OpenCV (ex. C:\opencv\build;). Ache a variável PATH, e clique em editar, no fim dela, adicione um “;” (ponto e vírgula), e coloque "%OPENCV_DIR%" ligado a continuação do diretório dos binários que foram instalados com o OpenCV (ex. %OPENCV_DIR%\x64\vc11\bin;).

Visual Studio IDE

Para quem gosta do auxílio que uma IDE proporciona, sugiro baixar o VisualStudio

Veja aqui um tutorial instrutivo que irá deixar a IDE configurada para reconhecer a biblioteca OpenCV.

Build e Compilation

Baixe o CMake para a portabilidade do seu projeto após verificar o tipo de sistema de sua máquina e extraia os arquivos. Após a extração encontre o diretório binário do CMake e execute o programa cmake-gui. Após isso insira o caminho dos arquivos de código na primeira entrada e na segunda insira o caminho que irá ser armazenados os arquivos build do CMake. Clique em Configure e depois que nenhum erro for relatado, você pode clicar no botão Generate. E seu trabalho estará pronto.

CMakeLists:

cmake_minimum_required (VERSION 2.6)
project (tp1.2)
add_executable(tp1.2 tp1.cpp)

Linha de comando utilizada:

cmake .

Diagrama Casos de uso

Esse diagrama foi feito pensando nos principais atores presentes no laboratório. É também uma ideia inicial de modelagem do banco de dados.

Diagrama de casos de uso

Fonte:

https://yuml.me/diagram/scruffy/usecase/samples

[Professor]-(Reservar laboratório)
[Professor]-(Acessar laboratório)
[Professor]-(Criar cadastro de acesso)
[Aluno]-(Criar cadastro de acesso)
[Aluno]-(Acessar laboratório [Funcionário]-(Criar cadastro de acesso)
[Funcionário]-(Acessar laboratório)
[Funcionário]-(Modificar cadastro de acesso)
[Funcionário]-(Excluir cadastro de acesso)

Diagrama de Atividades

Descreve o parte do sistema de reconhecimento de faces para permitir a entrada ou cadastrar uma pessoa no linf.

Diagrama de atividades

Fonte:

https://yuml.me/diagram/nofunky/activity/samples

(start)->(Reconhecer_Face)-><a>[Ok]->(Permite_Acesso_Linf),
<a>[Nao_identificado]->(Digita_login_senha)->(Atualiza_Cadastro)->(Permite_Acesso_Linf)->(end)

Diagram de Sequência

Abaixo, o diagrama de sequência que representa como o sistema efetua o login de um usuário, caso este já se encontre cadastrado no banco de dados. diagrama sequencia

Fonte:

https://www.websequencediagrams.com/

O código abaixo é o gerador da versão final do diagrama de sequência.

title Sequência de Login
Usuario->+SistemaLinf: EfetuaLogin()
SistemaLinf->+GerenteLogin: CredenciaUsuario(matricula)
GerenteLogin->+GerenteBD: ExisteUsuario(matricula)
GerenteBD-->-GerenteLogin: bool
alt ExisteUsuario() == true
GerenteLogin->GerenteLogin: ReconheceFace()
alt _ReconheceFace() == true
GerenteLogin->+GerenteBD:BuscaUsuario(matricula)
GerenteBD-->-GerenteLogin: usuario
GerenteLogin-->SistemaLinf: usuario
else
GerenteLogin->+GerenteBD: ChecaUsuario(matricula,Senha)
GerenteBD-->-GerenteLogin: bool
alt ChecaUsuario() == true
GerenteLogin->+GerenteBD: BuscaUsuario(matricula)
GerenteBD-->-GerenteLogin: usuario
GerenteLogin->GerenteLogin: _AtualizaBancoDeFotos()
end
end
GerenteLogin-->-SistemaLinf: usuario
end
SistemaLinf-->Usuario: usuario

Diagrama de Classes

Este é o primeiro diagrama de classes imaginado para o sistema. Na versão final, não se viu necessidade da classe GerenteReserva, permitindo comunicação direta entre a classe Usuario e GerenteBD. diagrama simplificado de classes

Screenshots

  • ss
  • ss2
  • ss3
  • ss4

About

Projeto final disciplina Técnicas de Programação 1

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published