Python – Displaying real time FPS at which webcam/video file is processed using OpenCV
We will be displaying the real-time processing FPS of the video file or webcam depending upon our choice.
FPS or frame per second or frame rate can be defined as number of frames displayed per second. A video can be assumed as a collection of images or we can say frames which are displayed at some rate to produce motion. if you wish to identify the object in the video than 15 fps can be sufficient but if you wish to identify the car number which is moving at speed of 40 km/hr. on the highway then you would need at least 30 fps for hassle-free identification. Therefore, it will be good if we know how to calculate FPS in our Computer Vision projects.
Steps to Calculate Live FPS:
- The first step will be to create a VideoCapture object by using cv2.VideoCapture() .We can read video from webcam or video file depending upon our choice .
- Now we will be processing the captured footage frame by frame until capture.read() is true ( here capture represent an object and this function additionally with frame it also return bool and provide the information whether the frame has been successfully read or not ).
- For calculating FPS, we will be keeping the record of the time when last frame processed and the end time when current frame processed.So, the processing time for one frame will be time difference between current time and previous frame time .
Processing time for this frame = Current time – time when previous frame processed
So fps at the current moment will be :
FPS = 1/ (Processing time for this frame)
- Since FPS will be always Integer, we will be converting FPS to integer and after that typecasting it to string because it will be easy and faster to display the string using cv2.putText() on frame . Now with the help cv2.putText() method we will be printing the FPS on this frame and then displaying this frame with the help of cv2.imshow() function .
Code: Python code implementation of the above mentioned approach
Python3
import numpy as np
import cv2
import time
cap = cv2.VideoCapture( 'vid.mp4' )
prev_frame_time = 0
new_frame_time = 0
while (cap.isOpened()):
ret, frame = cap.read()
if not ret:
break
gray = frame
gray = cv2.resize(gray, ( 500 , 300 ))
font = cv2.FONT_HERSHEY_SIMPLEX
new_frame_time = time.time()
fps = 1 / (new_frame_time - prev_frame_time)
prev_frame_time = new_frame_time
fps = int (fps)
fps = str (fps)
cv2.putText(gray, fps, ( 7 , 70 ), font, 3 , ( 100 , 255 , 0 ), 3 , cv2.LINE_AA)
cv2.imshow( 'frame' , gray)
if cv2.waitKey( 1 ) & 0xFF = = ord ( 'q' ):
break
cap.release()
cv2.destroyAllWindows()
|
Output: video file displaying live FPS in green colour.
Last Updated :
04 Jan, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...