所以我需要在OpenCV中获得网络摄像头fps率。哪个功能可以做这样的事情?
答案 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()