/EigenFace-Recognition

TuBes Algeo02 2022/2023 πŸ›©

Primary LanguagePython

Algeo02-21099

πŸ€– Simple Face Recognition πŸ€–


To watch the live demo of the program here.

Table of Contents

  1. General Info
  2. Member List
  3. Features
  4. Technologies Used
  5. Setup
  6. Usage
  7. Screenshots
  8. Structure
  9. Project Status
  10. Room for Improvement
  11. Acknowledgements
  12. Contact

General Information

A simple face recognition GUI that utilizing the Eigen Concepts of matrices using Tkinter, OpenCV, PIL, numpy, etc. This project got the best score among informatics engineering students at ITB in 2022.

Member List

Nama NIM
Vieri Fajar Firdaus 13521099
M. Rizky Sya'ban 13521119
M. Rifqi Farhansyah 13521166

Features

  • Upload your photo or use the webcam of your device to take a realtime photos
  • The result of comparison between the uploaded photo with the eigen face database
  • Download the result (input image and closest image) as a PDF file

Technologies Used

  • CustomTkinter - version 4.6.3
  • OpenCV2 - version 4.5.4
  • PIL - version 8.4.0
  • fpdf - version 1.7.2
  • numpy - version 1.21.3
  • sys - version 3.9.4
  • tkinter - version 8.6

Note: The version of the libraries above is the version that we used in this project. You can use the latest version of the libraries.

Setup

You can setup your project by cloning this repository and install the libraries above.

For specific version of the libraries, please check the requirements.txt file. You can install the libraries by using the command below.

pip install -r requirements.txt

Usage

You can run the program by using the command below.

python main.py

Screenshots

Figure 1. Main Menu (light mode)

Figure 2. Main Menu (dark mode)

Figure 3. Identified Image (by Upload)

Figure 4. Unidentified Image (by Webcam)

Structure

β”‚   README.md
β”‚   requirement.txt
β”‚
β”œβ”€β”€β”€.vscode
β”‚       settings.json
β”‚
β”œβ”€β”€β”€doc
β”‚       Tubes2-Algeo-2022.pdf
β”‚
β”œβ”€β”€β”€image
β”‚   β”‚   folder.jpg
β”‚   β”‚   icon.png
β”‚   β”‚   nf.jpg
β”‚   β”‚
β”‚   └───ss
β”‚           ss_1.png
β”‚           ss_2.png
β”‚           ss_3.png
β”‚
β”œβ”€β”€β”€result
β”‚       1.png
β”‚       10.png
β”‚       2.png
β”‚       3.png
β”‚       4.png
β”‚       5.png
β”‚       6.png
β”‚       7.png
β”‚       8.png
β”‚       9.png
β”‚
β”œβ”€β”€β”€src
β”‚   β”‚   main.py
β”‚   β”‚
β”‚   β”œβ”€β”€β”€eigenface
β”‚   β”‚   β”‚   driver.py
β”‚   β”‚   β”‚   dummyeigen.py
β”‚   β”‚   β”‚   dummyfile.py
β”‚   β”‚   β”‚   eigen.py
β”‚   β”‚   β”‚   eigenfaces.py
β”‚   β”‚   β”‚   QRDecomposition.py
β”‚   β”‚   β”‚   SVD.py
β”‚   β”‚   β”‚   tes.py
β”‚   β”‚   β”‚
β”‚   β”‚   └───__pycache__
β”‚   β”‚           driver.cpython-37.pyc
β”‚   β”‚           driver.cpython-39.pyc
β”‚   β”‚           dummyeigen.cpython-39.pyc
β”‚   β”‚           eigen.cpython-37.pyc
β”‚   β”‚           eigen.cpython-39.pyc
β”‚   β”‚           eigenfaces.cpython-37.pyc
β”‚   β”‚           eigenfaces.cpython-39.pyc
β”‚   β”‚           QRDecomposition.cpython-37.pyc
β”‚   β”‚           QRDecomposition.cpython-39.pyc
β”‚   β”‚
β”‚   β”œβ”€β”€β”€etc
β”‚   β”‚       haarcascade_frontalface_alt2.xml
β”‚   β”‚
β”‚   β”œβ”€β”€β”€GUI
β”‚   β”‚   β”‚
β”‚   β”‚   └───__pycache__
β”‚   β”‚           main.cpython-39.pyc
β”‚   β”‚
β”‚   └───imageprocess
β”‚       β”‚   dl2.py
β”‚       β”‚   driver.py
β”‚       β”‚   face.py
β”‚       β”‚   imageprocessing.py
β”‚       β”‚   inputpicture.py
β”‚       β”‚   resizing.py
β”‚       β”‚
β”‚       └───__pycache__
β”‚               imageprocessing.cpython-37.pyc
β”‚               imageprocessing.cpython-39.pyc
β”‚
β”œβ”€β”€β”€test
β”‚   β”œβ”€β”€β”€Coba_coba
β”‚   β”‚   β”œβ”€β”€β”€DataCoba
β”‚   β”‚   β”‚   β”œβ”€β”€β”€Adriana
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€Alex
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€Alexandra
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€Alvaro
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   └───Alycia
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€β”€data_100
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€β”€Data_Set
β”‚   β”‚   β”‚   β”œβ”€β”€β”€pins_Adriana Lima
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€pins_Alex Lawther
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€pins_Alexandra Daddario
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€pins_Alvaro Morte
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€pins_alycia dabnem carey
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€pins_Amanda Crew
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€pins_amber heard
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€pins_Andy Samberg
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€pins_Anne Hathaway
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   └───pins_Anthony Mackie
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€β”€gray
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€β”€Input_DataSet
β”‚   β”‚   β”‚   β”œβ”€β”€β”€Adriana_Lima
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€Alexandra_Daddario
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€Alex_Lawther
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€Alvaro_Morte
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   └───Alycia_Dabnem_Carey
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€β”€kita
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€β”€resvieri
β”‚   β”‚   β”‚
β”‚   β”‚   └───vieri
β”‚   β”‚
β”‚   β”œβ”€β”€β”€Input
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€β”€live
β”‚   β”‚   β”‚   β”œβ”€β”€β”€csv_file
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€β”€input
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   └───result
β”‚   β”‚   β”‚
β”‚   β”‚   └───User_DataSet
β”‚   β”‚
β”‚   └───Output
β”‚           output.pdf
β”‚
└───__pycache__
        imageprocessing.cpython-37.pyc

Project is: complete

Room for Improvement:

  • Optimalization of the EigenFace Algorithm code
  • Adding more features

Contact

Created by @Penggendong_Handal
2022