Как получить частоту кадров в секунду в OpenCV? - PullRequest
2 голосов
/ 04 ноября 2010

Так что мне нужно получить частоту кадров в секунду в OpenCV Какая функция может сделать такую ​​вещь для?

Ответы [ 4 ]

6 голосов
/ 05 ноября 2010
int cvGetCaptureProperty( CvCapture* capture, int property_id);

с property_id = CV_CAP_PROP_FPS

2 голосов
/ 05 марта 2013

Кажется, что для захвата с веб-камеры в режиме реального времени вы можете установить произвольный fps и прочитать тот же самый fps, который не имеет ничего общего с реальным fps с веб-камеры. Это ошибка?

Например:

cvSetCaptureProperty(capture,CV_CAP_PROP_FPS,500);

и позже

double rates = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
printf("%f\n",rates);

даст вам 500.

Но если я рассчитал время, используя ссылку на веб-камеру fps , это примерно 30 к / с.

0 голосов
/ 08 февраля 2017

В моем случае fps = video.get (cv2.CAP_PROP_FPS) не работал.

Итак, я нашел этот код по этой ссылке:

https://www.learnopencv.com/how-to-find-frame-rate-or-frames-per-second-fps-in-opencv-python-cpp/

import cv2
import time

if __name__ == '__main__':

    video = cv2.VideoCapture(1)

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

    # With webcam get(CV_CAP_PROP_FPS) does not work.
    # Let's see for ourselves.

    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)

    # Number of frames to capture
    num_frames = 120

    print "Capturing {0} frames".format(num_frames)

    # Start time
    start = time.time()

    # Grab a few frames
    for i in xrange(0, num_frames):
        ret, frame = video.read()

    # End time
    end = time.time()

    # Time elapsed
    seconds = end - start
    print "Time taken : {0} seconds".format(seconds)

    # Calculate frames per second
    fps = num_frames / seconds
    print "Estimated frames per second : {0}".format(fps);

    # Release video
    video.release()
0 голосов
/ 15 апреля 2014

* Решение OpenCV 2:

C++: double VideoCapture::get(int propId)

Е.Г.

VideoCapture myvid("video.mpg");
int fps=myvid.get(CV_CAP_PROP_FPS);
...