Disneyland Now Uses Face Recognition on Visitors
Back to Tutorials
techTutorialbeginner

Disneyland Now Uses Face Recognition on Visitors

May 2, 202623 views5 min read

Learn to build a basic face recognition system using Python and OpenCV, similar to the technology used by Disneyland. This beginner-friendly tutorial covers face detection, recognition, and visualization.

Introduction

In this tutorial, you'll learn how to build a basic face recognition system using Python and the OpenCV library. This technology, similar to what Disneyland uses, can identify and verify individuals in images or video streams. We'll create a simple application that can detect faces in photos and recognize known individuals.

Prerequisites

Before starting this tutorial, you'll need:

  • A computer with Python installed (Python 3.6 or higher)
  • Basic understanding of Python programming concepts
  • Internet connection for downloading required packages

Step-by-Step Instructions

Step 1: Install Required Python Packages

First, we need to install the necessary libraries for face recognition. Open your terminal or command prompt and run these commands:

pip install opencv-python
pip install face-recognition
pip install numpy

Why we install these packages: OpenCV provides computer vision capabilities, face-recognition gives us pre-trained models for face detection and recognition, and NumPy helps with numerical operations.

Step 2: Prepare Your Face Database

Create a folder called known_faces in your project directory. Inside this folder, add photos of people you want to recognize. Each photo should contain only one person's face, clearly visible.

For example, you might add photos named:

  • john.jpg
  • mary.jpg
  • alice.jpg

Why we prepare this database: The system needs to learn what faces look like before it can recognize them. These images become the reference database for our recognition system.

Step 3: Create the Main Recognition Script

Create a new Python file called face_recognition_system.py and add the following code:

import face_recognition
import cv2
import os

# Load known faces
known_face_encodings = []
known_face_names = []

# Process each image in the known_faces folder
for filename in os.listdir('known_faces'):
    if filename.endswith('.jpg') or filename.endswith('.png'):
        # Load the image
        image_path = os.path.join('known_faces', filename)
        image = face_recognition.load_image_file(image_path)
        
        # Get face encoding
        face_encodings = face_recognition.face_encodings(image)
        
        # Add to our database if we found a face
        if len(face_encodings) > 0:
            known_face_encodings.append(face_encodings[0])
            # Use filename without extension as name
            known_face_names.append(os.path.splitext(filename)[0])

print(f"Loaded {len(known_face_encodings)} known faces")

Why we do this: This code sets up our database by loading all the known faces and creating numerical representations (encodings) that the system can use for comparison.

Step 4: Add Face Detection and Recognition

Now add this code to your script to detect and recognize faces in a new image:

# Load an unknown image to test
unknown_image = face_recognition.load_image_file('test_image.jpg')

# Find all face locations in the image
face_locations = face_recognition.face_locations(unknown_image)

# Find face encodings for the faces in the unknown image
face_encodings = face_recognition.face_encodings(unknown_image, face_locations)

# Create a list to store names of recognized people
recognized_names = []

# Compare each face in the unknown image with our known faces
for face_encoding in face_encodings:
    # Compare with known faces
    matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
    
    name = "Unknown Person"
    
    # If we found a match, get the name
    if True in matches:
        first_match_index = matches.index(True)
        name = known_face_names[first_match_index]
        
    recognized_names.append(name)

print("Recognized faces:", recognized_names)

Why we do this: This code takes a new image, finds faces in it, and compares them against our known database to identify who is present.

Step 5: Add Visual Feedback

Let's enhance our script to draw rectangles around faces and display names:

# Convert to OpenCV format (RGB to BGR)
rgb_image = unknown_image[:, :, ::-1]

# Draw rectangles around faces and add labels
for (top, right, bottom, left), name in zip(face_locations, recognized_names):
    # Draw rectangle around face
    cv2.rectangle(rgb_image, (left, top), (right, bottom), (0, 255, 0), 2)
    
    # Add name label
    cv2.rectangle(rgb_image, (left, bottom - 35), (right, bottom), (0, 255, 0), cv2.FILLED)
    font = cv2.FONT_HERSHEY_DUPLEX
    cv2.putText(rgb_image, name, (left + 6, bottom - 6), font, 0.5, (255, 255, 255), 1)

# Display the image
cv2.imshow('Face Recognition', rgb_image)
print("Press any key to exit")
cv2.waitKey(0)
cv2.destroyAllWindows()

Why we do this: Visual feedback helps us understand what the system is doing and confirms that recognition is working properly.

Step 6: Test Your System

Create a test image file called test_image.jpg in your project directory. This image should contain faces of people you've added to your known_faces folder.

Run your script with:

python face_recognition_system.py

You should see output showing recognized names and a window displaying the image with face rectangles and labels.

Why we test: Testing validates that our system works correctly and helps us identify any issues before using it with real-world applications.

Summary

In this tutorial, you've built a basic face recognition system using Python and OpenCV. You learned how to:

  1. Install required packages for face recognition
  2. Prepare a database of known faces
  3. Load and process images for face detection
  4. Compare faces against known database
  5. Visualize results with face rectangles and labels

This simple system demonstrates the core concepts behind technologies like those used at Disneyland. While this is a basic implementation, it shows how face recognition works at a fundamental level. In real applications, systems like Disneyland's would need additional features like real-time video processing, database management, privacy controls, and robust error handling.

Remember that face recognition technology raises important privacy and ethical considerations, especially when used at scale in public spaces. Always consider the implications of deploying such systems in real-world environments.

Source: Wired AI

Related Articles