我目前正在使用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()时限制拍摄的照片数量吗?
如果有人回答这个问题,或者甚至给我一个线索,我应该在哪里进行更多搜索,这将是一个很大的帮助。
答案 0 :(得分:0)
对不起, 我自己找到了答案。
我要做的就是添加
use_video_port=True
作为capture_continuous的选项。
这将帧速率提高到大约20〜50,我只需要根据time.time()计算的持续时间添加一些延迟
为进一步说明,10 fps意味着我必须每0.1秒捕获1张图像;因此,我要做的就是为每个循环睡眠(0.1-{duration_calculated}),以实现所需的实现。
我希望这能为有需要的人提供帮助:)