Playing frame stream from video
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.
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:
