Bird
Raised Fist0
Computer Visionml~5 mins

Video writing in Computer Vision

Choose your learning style10 modes available
Introduction
Video writing lets us save a series of images as a video file. This helps us keep and share moving pictures from our programs.
Saving frames from a camera to watch later
Creating a video from processed images or animations
Recording results of computer vision tasks like object tracking
Making time-lapse videos from photos
Saving output from simulations or games as videos
Syntax
Computer Vision
import cv2

# Create a VideoWriter object
video_writer = cv2.VideoWriter(filename, fourcc, fps, frame_size)

# Write frames in a loop
video_writer.write(frame)

# Release the writer when done
video_writer.release()
filename is the name of the output video file, like 'output.avi'.
fourcc is a code that defines the video codec, created by cv2.VideoWriter_fourcc(*'XVID').
Examples
This creates a video writer for an AVI file with 20 frames per second and frame size 640x480.
Computer Vision
fourcc = cv2.VideoWriter_fourcc(*'XVID')
video_writer = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
This adds a single frame (an image) to the video file.
Computer Vision
video_writer.write(frame)
This closes the video file properly so it can be played later.
Computer Vision
video_writer.release()
Sample Model
This program creates a 3-second video (30 frames at 10 fps) where the screen color changes from black to white gradually.
Computer Vision
import cv2
import numpy as np

# Create a VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
video_writer = cv2.VideoWriter('test_video.avi', fourcc, 10.0, (320, 240))

# Create 30 frames of solid colors changing from black to white
for i in range(30):
    gray_value = int(i * 255 / 29)
    frame = np.full((240, 320, 3), gray_value, dtype=np.uint8)
    video_writer.write(frame)

video_writer.release()
print('Video writing complete')
OutputSuccess
Important Notes
Make sure the frame size matches the size you specify when creating the VideoWriter.
The frame must be a color image (3 channels) or grayscale (1 channel) matching the VideoWriter settings.
Always call release() to save and close the video file properly.
Summary
Video writing saves a series of images as a video file.
Use cv2.VideoWriter with filename, codec, fps, and frame size.
Write frames with write() and close with release().

Practice

(1/5)
1. What is the main purpose of using cv2.VideoWriter in computer vision?
easy
A. To save a series of images as a video file
B. To read video files frame by frame
C. To apply filters on images
D. To display images on screen

Solution

  1. Step 1: Understand the function of cv2.VideoWriter

    cv2.VideoWriter is designed to save multiple images as a continuous video file.
  2. Step 2: Differentiate from other OpenCV functions

    Functions like cv2.VideoCapture read videos, while VideoWriter writes videos.
  3. Final Answer:

    To save a series of images as a video file -> Option A
  4. Quick Check:

    Video writing = save images as video [OK]
Hint: VideoWriter saves frames into video files [OK]
Common Mistakes:
  • Confusing VideoWriter with VideoCapture
  • Thinking VideoWriter displays images
  • Assuming VideoWriter applies image filters
2. Which of the following is the correct way to create a cv2.VideoWriter object for a 640x480 video at 30 fps using the 'XVID' codec?
easy
A. cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'XVID'), 30, (640, 480))
B. cv2.VideoWriter('output.avi', 'XVID', 30, (640, 480))
C. cv2.VideoWriter('output.avi', cv2.VideoCapture_fourcc('XVID'), 30, (640, 480))
D. cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'), 30, 640, 480)

Solution

  1. Step 1: Use cv2.VideoWriter_fourcc correctly

    The codec must be passed as cv2.VideoWriter_fourcc(*'XVID') to get the fourcc code.
  2. Step 2: Check the parameters order and types

    Parameters are filename, fourcc, fps, and frame size as a tuple (width, height).
  3. Final Answer:

    cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'XVID'), 30, (640, 480)) -> Option A
  4. Quick Check:

    Correct codec and frame size syntax = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'XVID'), 30, (640, 480)) [OK]
Hint: Use cv2.VideoWriter_fourcc(*'XVID') for codec [OK]
Common Mistakes:
  • Passing codec as string directly
  • Using cv2.VideoCapture_fourcc instead of VideoWriter_fourcc
  • Incorrect frame size format (not a tuple)
3. What will be the output of this code snippet?
import cv2
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('test.avi', fourcc, 20.0, (320,240))
frame = 255 * np.ones((240,320,3), dtype=np.uint8)
out.write(frame)
out.release()
print('Video saved')
medium
A. Nothing happens, no file is created
B. A video file named 'test.avi' with a white frame is saved and 'Video saved' is printed
C. RuntimeError because frame size does not match
D. NameError due to missing import of numpy

Solution

  1. Step 1: Check imports

    The code uses np.ones but numpy (np) is not imported, causing a NameError.
  2. Step 2: Understand error impact

    Without importing numpy, the code will fail before writing or saving video.
  3. Final Answer:

    NameError due to missing import of numpy -> Option D
  4. Quick Check:

    Missing numpy import = NameError [OK]
Hint: Always import numpy when using np [OK]
Common Mistakes:
  • Assuming code runs without numpy import
  • Ignoring frame size correctness
  • Thinking print means success
4. Identify the error in this video writing code and select the fix:
import cv2
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 25, (640, 480))
frame = cv2.imread('image.jpg')
out.write(frame)
out.release()
medium
A. Fix: Change codec to 'MJPG'
B. Fix: Resize frame to (640, 480) before writing
C. Fix: Use grayscale image instead of color
D. Fix: Increase fps to 30

Solution

  1. Step 1: Check frame size vs VideoWriter size

    VideoWriter expects frames of size (640, 480). If frame size differs, write() fails or produces errors.
  2. Step 2: Correct frame size by resizing

    Resize the loaded image to (640, 480) before writing to match VideoWriter settings.
  3. Final Answer:

    Fix: Resize frame to (640, 480) before writing -> Option B
  4. Quick Check:

    Frame size must match VideoWriter size [OK]
Hint: Match frame size to VideoWriter size [OK]
Common Mistakes:
  • Ignoring frame size mismatch
  • Changing codec unnecessarily
  • Changing fps unrelated to error
5. You want to create a video from a list of images with different sizes. Which approach correctly handles this situation?
hard
A. Use VideoWriter without resizing; it auto-adjusts frame size
B. Write images directly without VideoWriter; just save as separate files
C. Resize all images to the same size before writing to VideoWriter
D. Change codec to 'X264' to support variable frame sizes

Solution

  1. Step 1: Understand VideoWriter frame size requirement

    VideoWriter requires all frames to have the same size as specified at creation.
  2. Step 2: Handle varying image sizes

    Resize all images to a consistent size before writing to avoid errors and ensure smooth video.
  3. Final Answer:

    Resize all images to the same size before writing to VideoWriter -> Option C
  4. Quick Check:

    Consistent frame size needed for video writing [OK]
Hint: Resize images to uniform size before video writing [OK]
Common Mistakes:
  • Assuming VideoWriter auto-resizes frames
  • Trying to write images without VideoWriter
  • Changing codec to fix size issues
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard