我有一个Raspberry,我想在其上创建一个间隔拍摄电影 我在互联网上看到的所有例子都保存了一堆图像,然后一次将它们转换成电影。
我想在很长一段时间内制作一部电影,这样我就无法保存数千张图像。我需要的是一个工具,可以在捕获图像后立即将图像添加到电影中。
有机会这样做吗?
答案 0 :(得分:1)
我认为你的逻辑存在缺陷 - 通过将每个图像添加到电影中,你必然会添加一个全帧,而不仅仅是一个差异帧。这样可以确保更高的质量 - 但与保存整个图像相比,它也不会为您节省空间。在向电影中添加内容时所看到的空间节省就是差异,而不是存储整个帧。
以递增的方式对支票进行部分差异可能有效,但我不确定您要定位的格式,也不确定需要哪些代码才能随意添加差异帧或一个完整的帧,取决于一些外部条件 - 编码通常作为一系列操作而不是单独进行。
答案 1 :(得分:1)
一个答案,但是还没有完成! 我需要您的帮助,使它变得完美! 在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,以选择在OLED上显示的时间间隔和帧号(为简单起见,代码未在上方显示,但它也在这里:https://github.com/gchennell/RPi-PiLapse)
这不会使视频大于366Mb,这是我已经达到的极限,我也不知道为什么-如果有人有好的建议,我将不胜感激