Read, Write, and Grayscale Videos

  • OpenCV is a powerful computer vision library for Video Processing.

  • OpenCV supports a wide variety of video formats, including AVI, MP4, and MPEG, and also supports capturing videos from cameras and webcams.

  • OpenCV's video reading functions can read frames from a video file and decode them into an image format.

  • We can implement various OpenCV functions on these decoded image formats.


In this tutorial, we’ll learn how to read and write videos in OpenCV.




import cv2
my_input = cv2.VideoCapture("video1.mp4")
if not my_input.isOpened():
    print("Error opening video file")
fps = int(my_input.get(cv2.CAP_PROP_FPS))
width = int(my_input.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(my_input.get(cv2.CAP_PROP_FRAME_HEIGHT))
output_file = "output_video.mp4"
fourcc = cv2.VideoWriter_fourcc(*'mp4v') 
out = cv2.VideoWriter(output_file, fourcc, fps, (width, height), isColor = False)
while my_input.isOpened():
    ret, frame = 
    if ret:
        grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        cv2.imshow("Frame", grey)
        if cv2.waitKey(1) & 0xFF == ord('q'):
  • First we imported OpenCV.

  • Then, we used the cv2.VideoCapture() function to read the video file. We can use cv2.VideoCapture(0) to capture video with the first webcam and cv2.VideoCapture(1) to capture video with a second webcam.

  • Then, we used cv2.isOpened() function to check if the video is opened or not. If not, then it prints an error message.

  • Then, we used the get() method to take the properties of the input video like fps, width, and height.

  • Then, we specifies the name of the output file and fourcc.

  • Then, we used cv2.videowriter() function to set the properties of the output video. We have used the properties of our input video.

  • Then, we used a while loop until the input video is opened.

  • Within the loop, we used the read() method with VideoCapture object to read a frame from the input video file and store it in the variable. The read() method returns a boolean value (ret) to indicate whether the frame was read successfully or not.

  • If the frame was read successfully, we have used the cv2.cvtcolor() to convert the frames into grayscale.

  • Then, we used the write() method to write the final video in videowriter object.

  • At last we used cv2.imshow to display the final result and .release() method to release the resources.