Моя цель - настроить веб-камеру с Raspberry Pi, которая будет активна в течение определенного времени (скажем, 2 минуты).В течение этого времени я смогу в любое время сделать снимок и сохранить его в папке.Я решил работать с Pygame.Мой проект о захвате изображения, как только датчик сработал, поэтому он должен быть очень отзывчивым.
В соответствии с документацией для камеры Pygame здесь написано:
open()
Открывает устройство камеры, пытается его инициализироватьи начинает запись изображений в буфер.Перед использованием любой из перечисленных ниже функций камера должна быть запущена.
get_image()
Извлекает изображение из буфера в качестве поверхности RGB.При желании он может повторно использовать существующую поверхность, чтобы сэкономить время.Глубина в битах поверхности равна либо 24 битам, либо такой же, как у опционально поставляемой поверхности.
Так что для моего случая get_image()
, кажется, просто вытаскивает первое изображение, снятое после start()
был вызван.У меня вопрос, как я могу достичь буфера со всеми захваченными изображениями или как на самом деле работает захват?Я не могу найти решение для захвата и сохранения неподвижного изображения (в любое время) после того, как я позвоню start()
и stop()
на камеру Pygame.Поскольку функция start()
запускается в течение нескольких секунд, она просто слишком медленная, чтобы просто вызывать start()
, get_image()
и stop()
друг за другом.Любая помощь или предложения будут оценены.
Смотрите мой код Python ниже:
def activateCapturing:
pygame.init()
pygame.camera.init()
cam = pygame.camera.Camera("/dev/video0",(320,180))
cam.start()
pngdata = None
imageAsbytes = []
activated = True
while activated:
if readSensor():
img = cam.get_image()
pygame.image.save(img, "/tmp/image.png")
activated = False
with open("/tmp/image.png", 'rb') as f:
pngdata = f.read()
imageAsbytes = bytearray(pngdata)
cam.stop()
return imageAsbytes
Заранее спасибо!