Python OpenCV video.get(cv2.CAP_PROP_FPS) returns 0.0 FPS
Asked Answered
S

2

22

This is my video

enter image description here

This is the script to find fps:

import cv2
if __name__ == '__main__' :

    video = cv2.VideoCapture("test.mp4");

    # Find OpenCV version
    (major_ver, minor_ver, subminor_ver) = (cv2.__version__).split('.')

    if int(major_ver)  < 3 :
        fps = video.get(cv2.cv.CV_CAP_PROP_FPS)
        print "Frames per second using video.get(cv2.cv.CV_CAP_PROP_FPS): {0}".format(fps)
    else :
        fps = video.get(cv2.CAP_PROP_FPS)
        print "Frames per second using video.get(cv2.CAP_PROP_FPS) : {0}".format(fps)

    video.release(); 

This is the output of the script for this video: Frames per second using video.get(cv2.CAP_PROP_FPS) : 0.0

Why is it returning 0.0? The FPS is 14.0

Soak answered 28/2, 2018 at 9:13 Comment(5)
did you check opencv actually opened the file? (with video.isOpened())Particularize
@Particularize you are right it didn't, it returns False. Why is that?Soak
well, it didn't open it, you can try with video.open("test.mp4") try, to put the full path just in case... if not try another video (to discard a codec problem)Particularize
It was actually because opencv was not installed via pip (I have no idea how it was being importing, it's my first time using it). So after doing pip-install python-opencv, it worked like a charm.Soak
That just explains what was the problem in the first place, when you install opencv with pip it brings its own backends (ffmpeg) so I think the problem was that your first opencv backend was brokenHattie
S
12

Performing pip install python-opencv fixed the problem and the FPS is correctly detected.

EDIT: tested with python 3.8 and indeed it is pip install opencv-python. Cannot remember two years ago what python I was using.

EDIT November 2022: please also check Perry's answer below, if you are using a newer opencv-python version

Soak answered 28/2, 2018 at 10:29 Comment(3)
When I try this on Windows 10, I get three rows of output: Collecting python-opencv, ERROR: Could not find a version that satisfies the requirement python-opencv (from versions: none) and ERROR: No matching distribution found for python-opencvCalces
Actually it should be pip install opencv-pythonUltrasonic
On a Google Colab Notebook, I had to use pip install --upgrade --force-reinstall opencv-pythonPresser
Y
8

The recent versions of opencv-python will give an error called AttributeError because cv2 doesn't have any attribute named cv.

Instead use the following

import cv2

vidcap = cv2.VideoCapture('some_video.avi')
fps = vidcap.get(cv2.CAP_PROP_FPS)

print(f"{fps} frames per second")

This will give the frames per second value

Yeta answered 17/11, 2022 at 12:40 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.