In this recipe, you will learn how to get such VideoCapture properties as frame height and width, frame count for video files, and camera frame rate.
Obtaining a frame stream properties
Getting ready
You need to have OpenCV 3.x installed with Python API support.
How to do it...
Execute the following steps:
- Let's create an auxiliary function that will take the VideoCapture ID (either what the camera device is or the path to the video), create a VideoCapture object, and request the frame height and width, count, and rate:
import numpy
import cv2
def print_capture_properties(*args):
capture = cv2.VideoCapture(*args)
print('Created capture:', ' '.join(map(str, args)))
print('Frame count:', int(capture.get(cv2.CAP_PROP_FRAME_COUNT)))
print('Frame width:', int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)))
print('Frame height:', int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print('Frame rate:', capture.get(cv2.CAP_PROP_FPS))
- Let's call this function for a video file:
print_capture_properties('../data/drop.avi')
- Now let's request properties for the camera capture object:
print_capture_properties(0)
How it works...
As in the earlier recipes, working with cameras and video frame streams is done through the cv2.VideoCapture class. You can get properties using the capture.get function, which takes the property ID and returns its value as a floating-point value.
Note that, depending on the OS and video backend used, not all of the properties being requested can be accessed.
The following output is expected (it might vary depending on the OS and the video backend that OpenCV was compiled with):
Created capture: ../data/drop.avi Frame count: 182 Frame width: 256 Frame height: 240 Frame rate: 30.0
Created capture: 0
Frame count: -1
Frame width: 640
Frame height: 480
Frame rate: 30.0