Loading...

Face Recognition with Python Step-by-Step Guide

Face Recognition with Python Step-by-Step Guide

By Sumit Pandey

27 Oct, 2025

Introduction

Face recognition technology identifies or verifies individuals based on facial features captured in images or video frames. It uses powerful machine learning models capable of extracting unique face encodings. In this blog, we will build a simple but functional face recognition system using Python, OpenCV, and the face_recognition library.

What You Will Build

By the end of this tutorial, you will have a webcam-based face recognition application that can detect known faces in real-time and label them directly on screen.

Prerequisites

  • Basic knowledge of Python
  • A working webcam
  • Python 3.8+ installed on your system

Step 1 — Create a Project Folder

Open your terminal or PowerShell and create a new folder:

mkdir face-recognition
cd face-recognition

Step 2 — Create a Folder for Face Images

Inside the project folder, create a new folder named faces and add clear front-facing images:

faces/
  sumit.jpg
  tony.jpg

Tip: Adding 2–3 different images per person can improve accuracy.

Step 3 — Install Required Libraries

Run the following commands to install the necessary dependencies:

pip install face_recognition
pip install opencv-python
pip install numpy

Windows Tip: If you face dlib/CMake errors, install CMake first:

pip install cmake

Step 4 — Write the Code

Create a file named face_recognition.py and paste the following code:

import face_recognition
import cv2
import numpy as np

# 1) Load known face images and create encodings
sumit_img = face_recognition.load_image_file("faces/sumit.jpg")
sumit_encode = face_recognition.face_encodings(sumit_img)[0]

tony_img = face_recognition.load_image_file("faces/tony.jpg")
tony_encode = face_recognition.face_encodings(tony_img)[0]

known_faces = [sumit_encode, tony_encode]
names = ["Sumit Pandey", "Tony Stark"]

# 2) Open webcam
video = cv2.VideoCapture(0)

while True:
    ret, frame = video.read()
    if not ret:
        break

    # 3) Convert BGR to RGB
    rgb_frame = frame[:, :, ::-1]

    # 4) Detect faces and get encodings
    face_locations = face_recognition.face_locations(rgb_frame)
    face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)

    # 5) Compare detected faces with known faces
    for (top, right, bottom, left), encoding in zip(face_locations, face_encodings):
        matches = face_recognition.compare_faces(known_faces, encoding)
        name = "Unknown"

        # 6) Get best match
        face_distances = face_recognition.face_distance(known_faces, encoding)
        best_match_index = np.argmin(face_distances)

        if matches[best_match_index]:
            name = names[best_match_index]

        # 7) Draw box and label
        cv2.rectangle(frame, (left, top), (right, bottom), (0,255,0), 2)
        cv2.putText(frame, name, (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0,255,0), 2)

    # 8) Display the frame
    cv2.imshow("Face Recognition", frame)

    # 9) Exit
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

video.release()
cv2.destroyAllWindows()

Step-by-Step Code Explanation

  1. Import libraries: Handle webcam input, arrays, and face encodings.
  2. Load known faces: Convert each face into a 128-dimension encoding.
  3. Open webcam: Capture video frame-by-frame.
  4. Convert RGB: OpenCV is BGR-based; face_recognition expects RGB.
  5. Detect faces: Identify coordinates for faces inside each frame.
  6. Generate encodings: Create encoding vectors for detected faces.
  7. Compare: Match encodings with saved known faces.
  8. Draw bounding boxes: Highlight face area and display the name.
  9. Quit: Press ‘q’ to stop the webcam safely.

Step 5 — Run the Script

Execute the script in the terminal:

python face_recognition.py

Your webcam will open and display face labels in real-time.

Common Errors & Fixes

  • ModuleNotFoundError: Ensure dependencies are correctly installed.
  • dlib build errors (Windows): Install CMake or download prebuilt wheels.
  • No camera feed: Try using cv2.VideoCapture(1) if you have multiple cameras.
  • Unknown face label: Try adding more training images of the person.

Accuracy Improvement Tips

  • Use high-resolution images while capturing training data.
  • Add multiple face samples per person.
  • Use better lighting conditions.
  • Fine-tune detection frequency for performance.

Real-World Use Cases

  • Automated attendance systems
  • Classroom monitoring
  • Secure access authentication
  • Smart door locks
  • Fraud detection

Privacy & Security Considerations

Face recognition deals with sensitive biometric data. Always store metadata securely, use encryption, and follow data protection laws such as GDPR. Avoid tracking individuals without consent.

Conclusion

With just a few powerful libraries, Python makes face recognition extremely easy and accessible. This tutorial covered everything needed to build a working prototype — from installation to real-time detection. You can now extend this system into attendance tracking, authentication, or access control applications.

RECENT POSTS

How Staff Augmentation Solves the Tech Talent Shortage for BFSI and Fintech Enterprises

Last quarter, a mid-sized NBFC we work with needed four senior Java developers to migrate their loan management system before RBI’s new compliance deadline. Their HR team had been running the hiring process for eleven weeks. Three offers were made. Two candidates ghosted after accepting, one joined a competitor for a better package mid-negotiation. The […]

Common Mistakes Companies Make When Outsourcing Software Development (And How BFSI Firms Can Avoid Them)

At Speqto Technologies, we’ve spent the better part of a decade building software for banks, NBFCs, insurance companies, and fintech startups. Over that time, we’ve seen the same outsourcing mistakes repeat themselves across companies that otherwise have sharp business instincts. Financial services leaders know how to evaluate risk in lending books or investment portfolios, but […]

Why API-First Architecture Matters for BFSI Digital Products

A few months back, we sat in a review call with an NBFC client whose loan origination system had grown into a genuine mess. Every time they wanted to launch a new lending product or plug in a fresh credit bureau, their engineering team had to rebuild integration logic from scratch. Six weeks of “simple […]

How Custom Workflow Automation Cuts Operational Risk in BFSI — Lessons From the Field

Ask any operations head at a bank, NBFC, or fintech where their biggest risk actually lives, and rarely will the answer be “cybersecurity” or “market risk.” More often, it’s something far less glamorous — a reconciliation sheet that someone forgot to update, an approval that sat in an inbox for four days, or a compliance […]

How Fintech Startups Can Build Secure, Scalable Platforms Fast

Every fintech founder we’ve worked with at Speqto Technologies has faced the same dilemma at some point: ship fast to grab market share, or slow down and build things properly. The good news is that this isn’t actually an either-or choice. We’ve helped payment platforms, NBFCs, and digital lending startups launch in months, not years, […]

POPULAR TAG

POPULAR CATEGORIES