如何从相机测量并获得一致的fps

时间:2019-08-25 21:03:12

标签: python c++ opencv camera frame-rate

我的问题是我正在测量的帧速率不稳定。我正在尝试使用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的速度记录。我希望计算机能够连续记录。

0 个答案:

没有答案