В настоящее время я работаю с Raspberry Pi 3 и Raspberry Pi Camera Rev 2.0, и у меня возникли проблемы с реализацией захвата с интервалом 10 кадров в секунду.
Мне удалось найти коды, в которых я достиг 68,7 кадров в секунду на распбиане. Однако для моего проекта мне нужно реализовать захват изображения с интервалом, а именно 10 кадров в секунду, и когда я попытался вручную вмешаться с помощью capture_sequence или capture_continuous с помощью time.sleep (), я смог достичь только 2 кадра в секунду. .
Вот что у меня есть сейчас:
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 кадров в секунду? Если я запустил приведенный выше код, результат будет следующим:
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 () смогу ли я ограничить количество снимаемых фотографий?
Было бы здорово, если бы кто-нибудь ответил на этот вопрос или даже дал мне подсказку, где мне следует искать дальше.
Извините ребята, Я сам нашел ответ.
Все, что я сделал, это добавил
use_video_port=True
как вариант для capture_continuous.
Это увеличило частоту кадров примерно до 20 ~ 50, и мне просто пришлось добавить некоторую задержку в зависимости от продолжительности, рассчитанной с помощью time.time ()
Для дальнейшего объяснения, 10 кадров в секунду означает, что мне нужно делать одно изображение за 0,1 секунды; поэтому все, что мне нужно было сделать, - это засыпать (0.1 - {duration_calculated}) для каждого цикла, позволяющего реализовать нужную мне реализацию.
Надеюсь, это поможет всем, кто в этом нуждается :)