Skip to content
Home » How to Work with Camera Feed in Python (Real-Time Video Capture Tutorial)

How to Work with Camera Feed in Python (Real-Time Video Capture Tutorial)

  • by

Whether you’re building a security camera, a face detection system, or simply want to learn how to use your webcam with Python, this guide will walk you through how to access, display, and process live camera feed using OpenCV.


Tools You Need

Install OpenCV:

pip install opencv-python

Step 1: Access Your Webcam

OpenCV makes it incredibly easy to start capturing video:

import cv2

# Open the default webcam (index 0)
cap = cv2.VideoCapture(0)

while True:
# Capture frame-by-frame
ret, frame = cap.read()

# Display the resulting frame
cv2.imshow('Webcam Feed', frame)

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

# Release the capture
cap.release()
cv2.destroyAllWindows()
  1. ret is a boolean that indicates if the frame was successfully read.
  2. frame contains the current image from the webcam.

Step 2: Resize the Frame (Optional)

To improve speed or fit UI constraints:

frame = cv2.resize(frame, (640, 480))  # width x height

Step 3: Convert to Grayscale (or Other Formats)

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('Grayscale Feed', gray)

Step 4: Draw on Frames

cv2.rectangle(frame, (50, 50), (200, 200), (0, 255, 0), 2)
cv2.putText(frame, 'Live', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

Step 5: Save Video from Webcam

# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID') # or 'MJPG'
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))

cap = cv2.VideoCapture(0)

while cap.isOpened():
ret, frame = cap.read()
if ret:
out.write(frame) # Save frame
cv2.imshow('Recording...', frame)

if cv2.waitKey(1) == ord('q'):
break
else:
break

cap.release()
out.release()
cv2.destroyAllWindows()

Step 6: Combine with Face Detection

import dlib

detector = dlib.get_frontal_face_detector()

while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = detector(gray)

for face in faces:
x, y, w, h = face.left(), face.top(), face.width(), face.height()
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)

cv2.imshow('Live Detection', frame)
if cv2.waitKey(1) == ord('q'):
break

Use External or Multiple Cameras

To use another camera:

cap = cv2.VideoCapture(1)  # or 2, 3 depending on your device

Check how many cameras are connected:

for i in range(5):
cap = cv2.VideoCapture(i)
if cap.read()[0]:
print(f"Camera {i} is available.")
cap.release()

Troubleshooting

ProblemSolution
Black window or crashMake sure your webcam isn’t in use elsewhere
cv2.error when opening videoCheck if camera index is correct
cap.read() failsUse cap.isOpened() to confirm webcam is accessible
Video too slowResize frame, use faster codecs, or install OpenCV with GPU

Summary

TaskCode Snippet
Open cameracv2.VideoCapture(0)
Read frameret, frame = cap.read()
Show framecv2.imshow('Window', frame)
Save videocv2.VideoWriter()
Exit loopcv2.waitKey(1) == ord('q')

Project Ideas

  • Face recognition attendance system
  • Motion detection camera
  • Barcode scanner
  • Live drawing app
  • Virtual background (green screen)

Leave a Reply

Your email address will not be published. Required fields are marked *