覆盆子游戏中时光倒流电影
Raspberry timelapse movie on the fly
我有一个 Raspberry,我想在上面制作延时摄影电影。
我在互联网上看到的所有例子都是先保存一堆图像,然后将它们一次性全部转换成电影。
我想在很长一段时间内制作一部电影,所以我无法保存数千张图像。我需要的是一个在拍摄图像后立即将图像添加到电影中的工具。
有机会吗?
我认为您的逻辑存在缺陷 - 通过将每个图像添加到电影中,您必然会添加一个全帧,而不仅仅是一个 diff 帧。这将带来更高的质量,当然 - 但与保存整个图像相比,它也不会为您节省 space 任何东西。 space 您在向电影中添加东西时看到的节省都是关于差异,而不是存储完整帧。
使用增量检查帧进行部分差异可能有效,但我不确定您的目标格式是什么,也不确定需要什么代码才能任意添加差异帧或完整帧,取决于某些外部条件 - 编码通常作为一系列操作而不是单独进行。
一个答案,但还没有完成!
我需要你的帮助来使这个完美!
运行 在 python2
import os, cv2
from picamera import PiCamera
from picamera.array import PiRGBArray
from datetime import datetime
from time import sleep
now = datetime.now()
x = now.strftime("%Y")+"-"+now.strftime("%m")+"-"+now.strftime("%d")+"-"+now.strftime("%H")+"-"+now.strftime("%M") #string of dateandtimestart
def main():
imagenum = 100 #how many images
period = 1 #seconds between images
os.chdir ("/home/pi/t_lapse")
os.mkdir(x)
os.chdir(x)
filename = x + ".avi"
camera = PiCamera()
camera.resolution=(1920,1088)
camera.vflip = True
camera.hflip = True
camera.color_effects = (128,128) #makes a black and white image for IR camera
sleep(0.1)
out = cv2.VideoWriter(filename, cv2.cv.CV_FOURCC(*'XVID'), 30, (1920,1088))
for c in range(imagenum):
with PiRGBArray(camera, size=(1920,1088)) as output:
camera.capture(output, 'bgr')
imagec = output.array
out.write(imagec)
output.truncate(0) #trying to get more than 300mb files..
pass
sleep(period-0.5)
camera.close()
out.release()
if __name__ == '__main__':
main()
我已经配置了几个按钮和一个 OLED,以便 select 在 OLED 上显示时间间隔和帧数(为简单起见,上面没有显示代码,但它也在这里:https://github.com/gchennell/RPi-PiLapse )
这不会使视频大于 366Mb,这是我已经达到的某种限制,我不知道为什么 - 如果有人有好的建议,我将不胜感激
我有一个 Raspberry,我想在上面制作延时摄影电影。
我在互联网上看到的所有例子都是先保存一堆图像,然后将它们一次性全部转换成电影。
我想在很长一段时间内制作一部电影,所以我无法保存数千张图像。我需要的是一个在拍摄图像后立即将图像添加到电影中的工具。
有机会吗?
我认为您的逻辑存在缺陷 - 通过将每个图像添加到电影中,您必然会添加一个全帧,而不仅仅是一个 diff 帧。这将带来更高的质量,当然 - 但与保存整个图像相比,它也不会为您节省 space 任何东西。 space 您在向电影中添加东西时看到的节省都是关于差异,而不是存储完整帧。
使用增量检查帧进行部分差异可能有效,但我不确定您的目标格式是什么,也不确定需要什么代码才能任意添加差异帧或完整帧,取决于某些外部条件 - 编码通常作为一系列操作而不是单独进行。
一个答案,但还没有完成! 我需要你的帮助来使这个完美! 运行 在 python2
import os, cv2
from picamera import PiCamera
from picamera.array import PiRGBArray
from datetime import datetime
from time import sleep
now = datetime.now()
x = now.strftime("%Y")+"-"+now.strftime("%m")+"-"+now.strftime("%d")+"-"+now.strftime("%H")+"-"+now.strftime("%M") #string of dateandtimestart
def main():
imagenum = 100 #how many images
period = 1 #seconds between images
os.chdir ("/home/pi/t_lapse")
os.mkdir(x)
os.chdir(x)
filename = x + ".avi"
camera = PiCamera()
camera.resolution=(1920,1088)
camera.vflip = True
camera.hflip = True
camera.color_effects = (128,128) #makes a black and white image for IR camera
sleep(0.1)
out = cv2.VideoWriter(filename, cv2.cv.CV_FOURCC(*'XVID'), 30, (1920,1088))
for c in range(imagenum):
with PiRGBArray(camera, size=(1920,1088)) as output:
camera.capture(output, 'bgr')
imagec = output.array
out.write(imagec)
output.truncate(0) #trying to get more than 300mb files..
pass
sleep(period-0.5)
camera.close()
out.release()
if __name__ == '__main__':
main()
我已经配置了几个按钮和一个 OLED,以便 select 在 OLED 上显示时间间隔和帧数(为简单起见,上面没有显示代码,但它也在这里:https://github.com/gchennell/RPi-PiLapse )
这不会使视频大于 366Mb,这是我已经达到的某种限制,我不知道为什么 - 如果有人有好的建议,我将不胜感激