Taking Pictures
First, we need some pictures in order to create our video.
To do that, we will use Open CV and a web cam connected to Raspberry Pi.
Photo Taker
After settup the Rapsberry Pi and the camera, we should create a script to take pictures at some interval of time.
import cv2 import time # Initiate the VideoCapture with the number of the camera # In our case: /dev/video0 -> camera = 0 camera = cv2.VideoCapture(0) # Get an image from the camera # the Read function return a tuple # First value says with the image was successfully read # Second value is the image we want ret,frame = camera.read() # Lets make sure that the image is good while ret == False: ret,frame = camera.read() # Save the image into a file filePath = "./photos/%d.png" % int(time.time()) cv2.imwrite(filePath,frame) # Realease the camera del(camera)
Add the script to crontab. You can decide the interval of your photos.
# To edit the contrab crontab -e # The script will be called every 5 minutes */5 * * * * /usr/bin/python /path/to/script/photoTaker.py
Video Generator
Now it is time to put all photos together in a video.
import numpy
from PIL import Image
import cv2
import os
# Define the size of the video
# Must be the same size of the photos
width,height = (640, 480)
# Define the codec
fourcc = cv2.cv.CV_FOURCC('P','I','M','1')
# Create the video pointer
# Params (file_name,code,frames_per_second,size)
video = cv2.VideoWriter("timelapse.avi",fourcc,20,(width,height))
# List all photos
for i in os.listdir("photos"):
# Open the file
im1 = Image.open("photos/"+i)
# Convert to NumPY array
frame = numpy.array(im1)
# Add into the video
video.write(frame)
# Release the video
video.release()
Result
A timelapse of a autumn day on Arlington, VA.
Downloads and more
Links to raw files:

