在树莓派上实现均匀间隔图像捕获

时间:2018-10-05 12:08:27

标签: python raspberry-pi embedded embedded-resource

我目前正在使用Raspberry Pi 3和Raspberry Pi Camera Rev 2.0,在执行10 fps间隔捕获时遇到了麻烦。

我能够找到在raspbian上达到68.7fps的代码。但是,对于我的项目,我需要以一定的间隔实现图像捕获,精确到10 fps,并且当我尝试通过time.sleep()手动干预capture_sequence或capture_continuous时,我最多只能达到2 fps。

这是我目前拥有的:

import picamera
from time import time, sleep, gmtime, strftime

def wait():
    sleep(0.05)

with picaemra.PiCamera() as camera:
    # Camera Initialization HERE
    camera.resolution = (256, 256)
    camera.framerate = 80
    camera.start_preview()
    sleep(1)

    start = time()
    for filename in camera.capture_continuous('./testFolder/image{timestamp:%H:%M:%S.%f}.jpg'):
        finish = time()
        print('Captured %s at %.2ffps' % (filename, 1 / (finish - start)))
        wait()
        start = time()

上面的代码不一致地每秒产生约2张.jpg图像。为了达到我需要的10 fps,我应该如何处理?如果我运行上面的代码,结果将如下所示:

Captured ./testFolder/image21:26:52.049541.jpg at 2.00fps
Captured ./testFolder/image21:26:52.509880.jpg at 2.15fps
Captured ./testFolder/image21:26:52.979726.jpg at 2.15fps
Captured ./testFolder/image21:26:53.449143.jpg at 2.15fps
Captured ./testFolder/image21:26:53.920399.jpg at 2.17fps

还可以在使用capture_continous()时限制拍摄的照片数量吗?

如果有人回答这个问题,或者甚至给我一个线索,我应该在哪里进行更多搜索,这将是一个很大的帮助。

1 个答案:

答案 0 :(得分:0)

对不起, 我自己找到了答案。

我要做的就是添加

use_video_port=True

作为capture_continuous的选项。

这将帧速率提高到大约20〜50,我只需要根据time.time()计算的持续时间添加一些延迟

为进一步说明,10 fps意味着我必须每0.1秒捕获1张图像;因此,我要做的就是为每个循环睡眠(0.1-{duration_calculated}),以实现所需的实现。

我希望这能为有需要的人提供帮助:)