In this recipe, you will learn how to open an existing video file using OpenCV. You will also learn how to replay frames from the opened video.
Playing frame stream from video
Getting ready
You need to have OpenCV 3.x installed with Python API support.
How to do it...
The following are the steps for this recipe:
- Create a VideoCapture object for video file:
import cv2
capture = cv2.VideoCapture('../data/drop.avi')
- Replay all the frames in the video:
while True:
has_frame, frame = capture.read()
if not has_frame:
print('Reached the end of the video')
break
cv2.imshow('frame', frame)
key = cv2.waitKey(50)
if key == 27:
print('Pressed Esc')
break
cv2.destroyAllWindows()
How it works...
Working with video files is virtually the same as working with cameras—it's done through the same cv2.VideoCapture class. This time, however, instead of the camera device index, you should specify the path to the video file you want to open. Depending on the OS and video codecs available, OpenCV might not support some of the video formats.
After the video file is opened in a infinite while loop, we acquire frames using the capture.read method. The function returns a pair: a Boolean frame read success flag, and the frame itself. Note that frames are read at the maximum possible rate, meaning if you want to replay video at a certain FPS, you should implement it on your own. In the preceding code, after we call the cv2.imshow function, we wait for 50 milliseconds in the cv2.waitKey function. Assuming the time spent on showing the image and decoding the video is negligible, the video will be replayed at a rate no greater than 20 FPS.
The following frames are expected to be seen: