我的问题是我正在测量的帧速率不稳定。我正在尝试使用FLIR的Chameleon3相机(以前是Point Grey)以25 fps保存100张尺寸为2048 x 2448的帧。使用他们的PyCapture2模块,我正在记录图像并将其保存到计算机。对我来说很重要的一点是,我可以确认我以25fps的速度录制。我想问你最可靠的方法是什么,我想确保自己了解发生了什么。当我用该程序录制FlyCapture随附的相机时,我会测量将图像保存到磁盘所需的时间。
如果我对问题的措辞有误,请告诉我。
以可靠的帧速率保存视频的最快方法是将视频存储在RAM缓冲区中,在这种情况下,RAM中将有100帧,然后将缓冲区保存到磁盘上?
我认为测量的帧速率不稳定,因为将图像写入磁盘需要花费时间。这合理吗?
是否有办法确认保存到缓冲区中的视频是否为预期的帧率?
有时计算机会以25fps的速度保存视频,有时以15fps的速度保存视频。为什么计算机每次都没有以相同的速度保存?
我正在Windows中执行此操作,因此我尝试在视频记录期间监视资源监视器。磁盘读/写峰值达到100%。 RAM没有装满。
cam = PyCapture2.Camera()
cam.connect(bus.getCameraFromIndex(0))
logging.info('Starting capture...')
cam.startCapture() # saves to buffer
framerate = 25
save_video_helper(cam, N, filename.encode('utf-8'), framerate, props)
cam.stopCapture()
cam.disconnect()
def save_video_helper(cam, num_images, filename, framerate, props=None, file_format='AVI'):
video = PyCapture2.FlyCapture2Video()
if props is not None:
camera_props(cam, props)
start = time.time()
for i in range(num_images):
try:
image = cam.retrieveBuffer()
except PyCapture2.Fc2error as fc2Err:
print('Error retrieving buffer : %s' % fc2Err)
continue
if i == 0:
video.AVIOpen(filename, framerate)
video.append(image)
end = time.time()
seconds = end - start
checking_fps = num_images / seconds
print('Checking fps : %.2f' % checking_fps)
logging.info('Checking fps : %.2f' % checking_fps)
# print('Appended image %d...' % i)
end = time.time()
seconds = end - start
check_fps = num_images / seconds
print('Checking fps : %.2f' % check_fps)
logging.info('Checking fps : %.2f' % check_fps)
print('Appended {} images to {} file: {}...'.format(num_images, file_format, filename))
logging.info('Appended {} images to {} file: {}...'.format(num_images, file_format, filename))
video.close()
我不明白为什么计算机有时以25fps的速度记录而有时以15fps的速度记录。我希望计算机能够连续记录。