所以我需要在OpenCV中获取网络摄像头的帧速率。哪个函数可以做到这一点?
int cvGetCaptureProperty( CvCapture* capture, int property_id);
使用 property_id = CV_CAP_PROP_FPS
属性
cvSetCaptureProperty(capture,CV_CAP_PROP_FPS,500);
double rates = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
printf("%f\n",rates);
如果我使用网络摄像头FPS链接计时,它大约是正常的30fps。
将给你500。
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()
*OpenCV 2 解决方案:
C++: double VideoCapture::get(int propId)
例如
VideoCapture myvid("video.mpg");
int fps=myvid.get(CV_CAP_PROP_FPS);