如何在OpenCV中获得网络摄像头fps率?

时间:2010-11-04 20:14:04

标签: c++ c video opencv webcam

所以我需要在OpenCV中获得网络摄像头fps率。哪个功能可以做这样的事情?

4 个答案:

答案 0 :(得分:6)

int cvGetCaptureProperty( CvCapture* capture, int property_id);

property_id = CV_CAP_PROP_FPS

答案 1 :(得分:2)

对于实时网络摄像头捕获,您可以设置任意fps并回读相同的fps,这与网络摄像头的真实fps无关。这是一个错误吗?

例如:

cvSetCaptureProperty(capture,CV_CAP_PROP_FPS,500);

以后

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

会给你500.

但是,如果我使用web cam fps link计时,它大约是正常的30fps。

答案 2 :(得分:0)

* OpenCV 2解决方案:

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

E.g。

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

答案 3 :(得分:0)

在我的情况下,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()