[英]What is the optimal fps to record an OpenCV video at?
我正在修改OpenCV,并且在确定应该录制摄像头素材的fps时遇到了一些麻烦。 当我以15 fps
录制时,录制的素材比“真实生活”快得多。 我想知道是否可以录制“最佳” fps,使得录制时间与拍摄视频所需的时间完全一样?
这是我正在运行的程序(尽管我认为这与问题无关):
import cv2
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
fps = 15.0 # Controls the fps of the video created: todo look up optimal fps for webcam
out = cv2.VideoWriter()
success = out.open('../assets/output.mp4v',fourcc, fps, (1280,720),True)
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
frame = cv2.flip(frame,1)
# write the flipped frame
out.write(frame)
cv2.imshow('frame',frame)
# If user presses escape key program terminates
userInput = cv2.waitKey(1)
if userInput == 27:
break
else:
break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()
假设您的相机以25 FPS录制。 如果您以25 FPS的速度拍摄时以15 FPS的速度拍摄,则视频将比实际生活快约1.6倍。
您可以使用get(CAP_PROP_FPS)
或get(CV_CAP_PROP_FPS)
找出帧频,但除非源是视频文件,否则get(CV_CAP_PROP_FPS)
无效。
对于相机或网络摄像头,您必须以编程方式计算( 估算 )FPS:
num_frames = 240; # Number of frames to capture
print "Capturing {0} frames".format(num_frames)
start = time.time()# Start time
# Grab a few frames
for i in xrange(0, num_frames) :
ret, frame = video.read()
end = time.time() # End time
seconds = end - start # Time elapsed
print "Time taken : {0} seconds".format(seconds)
# Calculate frames per second
fps = num_frames / seconds;
print "Estimated frames per second : {0}".format(fps);
因此,此程序通过将前240帧记录为样本,然后计算增量时间来估算视频源的帧速率。 最后,简单除法的结果将为您提供FPS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.