Face Detection in Video
Real-time face detection processes every frame from a video file or live camera. Performance is critical — detection must be fast enough to keep up with the video frame rate.
10 min•By Priygop Team•Updated 2026
Real-Time Face Detection
Real-Time Face Detection
import cv2
import time
def face_detection_video(source=0, max_frames=300):
"""
Real-time face detection from camera or video file.
source: 0 = default webcam, or a video file path
max_frames: stop after this many frames (0 = run until 'q' pressed)
"""
face_cascade = cv2.CascadeClassifier(
cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
)
cap = cv2.VideoCapture(source)
if not cap.isOpened():
print("Error: Could not open video source")
return
# Get video properties
fps = cap.get(cv2.CAP_PROP_FPS)
total = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
print(f"Video: {fps:.1f} FPS, {total} frames")
frame_count = 0
face_counts = []
start_time = time.time()
while True:
ret, frame = cap.read()
if not ret:
break
# Resize for faster processing
small = cv2.resize(frame, (640, 480))
gray = cv2.cvtColor(small, cv2.COLOR_BGR2GRAY)
# Detect faces — tune parameters for speed vs. accuracy
faces = face_cascade.detectMultiScale(
gray,
scaleFactor=1.2, # Larger = faster but less accurate
minNeighbors=5,
minSize=(30, 30)
)
face_counts.append(len(faces))
# Draw detections
for (x, y, w, h) in faces:
cv2.rectangle(small, (x, y), (x+w, y+h), (0, 255, 0), 2)
# Display FPS and count
elapsed = time.time() - start_time
proc_fps = frame_count / elapsed if elapsed > 0 else 0
cv2.putText(small, f"Faces: {len(faces)} | FPS: {proc_fps:.1f}",
(10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
frame_count += 1
if max_frames > 0 and frame_count >= max_frames:
break
cap.release()
elapsed = time.time() - start_time
print(f"Processed {frame_count} frames in {elapsed:.1f}s ({frame_count/elapsed:.1f} FPS)")
print(f"Average faces per frame: {sum(face_counts)/len(face_counts):.1f}")
face_detection_video(source="video.mp4")Diagram
Loading diagram…
Machine Learning follows a structured pipeline from data to deployment