Bird
Raised Fist0
Raspberry Piprogramming~5 mins

Time-lapse photography in Raspberry Pi

Choose your learning style10 modes available
Introduction

Time-lapse photography lets you capture slow changes by taking pictures at set intervals. When played fast, it shows a long event quickly.

Watching a flower bloom over hours or days.
Recording clouds moving across the sky.
Showing a busy street or crowd over time.
Capturing the sunset or sunrise slowly changing.
Syntax
Raspberry Pi
import time
from picamera import PiCamera

camera = PiCamera()

interval_seconds = 10  # Time between shots
number_of_photos = 5  # How many photos to take

for photo_number in range(number_of_photos):
    camera.capture(f'image_{photo_number}.jpg')
    time.sleep(interval_seconds)

Use PiCamera() to control the Raspberry Pi camera.

time.sleep(seconds) pauses the program between shots.

Examples
If number_of_photos is zero, no pictures are taken.
Raspberry Pi
import time
from picamera import PiCamera

camera = PiCamera()

# Edge case: zero photos
number_of_photos = 0
for photo_number in range(number_of_photos):
    camera.capture(f'image_{photo_number}.jpg')
    time.sleep(5)
With one photo, the loop is not needed; just capture once.
Raspberry Pi
import time
from picamera import PiCamera

camera = PiCamera()

# Edge case: one photo
number_of_photos = 1
camera.capture('single_image.jpg')
Short intervals take photos quickly, useful for fast events.
Raspberry Pi
import time
from picamera import PiCamera

camera = PiCamera()

# Edge case: very short interval
interval_seconds = 0.5
number_of_photos = 3
for photo_number in range(number_of_photos):
    camera.capture(f'image_{photo_number}.jpg')
    time.sleep(interval_seconds)
Sample Program

This program takes 3 photos with 2 seconds between each. It prints messages so you know what is happening.

Raspberry Pi
import time
from picamera import PiCamera

# Create camera object
camera = PiCamera()

# Set interval between photos in seconds
interval_seconds = 2

# Number of photos to take
number_of_photos = 3

print('Starting time-lapse photography...')

# Take photos at intervals
for photo_number in range(number_of_photos):
    filename = f'image_{photo_number}.jpg'
    print(f'Taking photo {photo_number + 1} of {number_of_photos}: {filename}')
    camera.capture(filename)
    if photo_number < number_of_photos - 1:
        print(f'Waiting {interval_seconds} seconds before next photo...')
        time.sleep(interval_seconds)

print('Time-lapse photography complete.')
OutputSuccess
Important Notes

Time complexity: O(n) where n is the number of photos, because it takes each photo one by one.

Space complexity: O(1) for the program itself, but photos use storage space on the SD card.

Common mistake: forgetting to add delay between photos, which causes all photos to be taken instantly and defeats time-lapse purpose.

Use time-lapse photography when you want to see slow changes quickly. For fast events, normal video is better.

Summary

Time-lapse photography captures photos at set intervals to show slow changes quickly.

Use PiCamera and time.sleep() to control timing.

Remember to set a delay between shots to get the time-lapse effect.

Practice

(1/5)
1. What is the main purpose of using time-lapse photography with a Raspberry Pi camera?
easy
A. To capture images at set intervals to show slow changes quickly
B. To take a single high-resolution photo
C. To record live video continuously
D. To stream video over the internet in real-time

Solution

  1. Step 1: Understand time-lapse photography concept

    Time-lapse photography captures photos at regular intervals to speed up slow processes.
  2. Step 2: Compare options with concept

    Only To capture images at set intervals to show slow changes quickly describes capturing images at intervals to show slow changes quickly.
  3. Final Answer:

    To capture images at set intervals to show slow changes quickly -> Option A
  4. Quick Check:

    Time-lapse = interval photos showing slow changes fast [OK]
Hint: Remember time-lapse means interval shots, not continuous video [OK]
Common Mistakes:
  • Confusing time-lapse with video recording
  • Thinking it captures only one photo
  • Assuming it streams live video
2. Which of the following Python code snippets correctly sets a 5-second delay between photos in a Raspberry Pi time-lapse script?
easy
A. sleep.time(5)
B. time.wait(5)
C. delay(5)
D. time.sleep(5)

Solution

  1. Step 1: Recall correct syntax for delay in Python

    The correct function to pause execution is time.sleep(seconds).
  2. Step 2: Check each option

    Only time.sleep(5) uses time.sleep(5), which is correct syntax for 5 seconds delay.
  3. Final Answer:

    time.sleep(5) -> Option D
  4. Quick Check:

    Delay = time.sleep(seconds) [OK]
Hint: Use time.sleep() to pause, not time.wait() or delay() [OK]
Common Mistakes:
  • Using time.wait() which does not exist
  • Swapping module and function names
  • Using undefined delay() function
3. What will be the output of this Raspberry Pi time-lapse code snippet?
from picamera import PiCamera
import time
camera = PiCamera()
camera.start_preview()
for i in range(3):
    camera.capture(f'image_{i}.jpg')
    time.sleep(2)
camera.stop_preview()
medium
A. No images saved because preview blocks capture
B. Only one image named image_2.jpg saved after 6 seconds
C. Three images named image_0.jpg, image_1.jpg, image_2.jpg saved with 2 seconds delay between each
D. SyntaxError due to incorrect f-string usage

Solution

  1. Step 1: Analyze the loop and capture calls

    The loop runs 3 times (i=0,1,2), capturing images named image_0.jpg, image_1.jpg, image_2.jpg.
  2. Step 2: Understand timing between captures

    After each capture, the program waits 2 seconds before next capture, so images are spaced by 2 seconds.
  3. Final Answer:

    Three images named image_0.jpg, image_1.jpg, image_2.jpg saved with 2 seconds delay between each -> Option C
  4. Quick Check:

    Loop 3 times + capture + sleep(2) = 3 spaced images [OK]
Hint: Loop count = number of images; sleep controls delay [OK]
Common Mistakes:
  • Thinking only last image is saved
  • Confusing preview with capture blocking
  • Assuming f-string causes error
4. Identify the error in this Raspberry Pi time-lapse code snippet:
from picamera import PiCamera
import time
camera = PiCamera()
for i in range(5):
    camera.capture('image_i.jpg')
    time.sleep(1)
medium
A. Missing camera.start_preview() before capture
B. The filename 'image_i.jpg' does not change, overwriting images
C. time.sleep() cannot be used inside a loop
D. PiCamera() must be imported after time module

Solution

  1. Step 1: Check filename usage inside loop

    The filename is a fixed string 'image_i.jpg', so each capture overwrites the previous image.
  2. Step 2: Verify other code parts

    start_preview() is optional; time.sleep() works in loops; import order does not matter here.
  3. Final Answer:

    The filename 'image_i.jpg' does not change, overwriting images -> Option B
  4. Quick Check:

    Filename must vary to save multiple images [OK]
Hint: Use f-strings or string formatting to vary filenames [OK]
Common Mistakes:
  • Thinking start_preview() is mandatory
  • Believing time.sleep() can't be in loops
  • Assuming import order causes error
5. You want to create a time-lapse video from 10 photos taken every 3 seconds using Raspberry Pi. Which approach correctly combines capturing images and creating the video?
hard
A. Capture images with time.sleep(3) in a loop, then use ffmpeg to combine images into a video
B. Capture images continuously without delay, then rename files manually before video creation
C. Use time.sleep(10) between captures and combine images with a photo viewer
D. Capture images with delay, then upload them directly to YouTube without video creation

Solution

  1. Step 1: Understand time-lapse capture timing

    Photos must be taken every 3 seconds, so time.sleep(3) in a loop is correct.
  2. Step 2: Combine images into video

    ffmpeg is a common tool to combine sequential images into a video file.
  3. Final Answer:

    Capture images with time.sleep(3) in a loop, then use ffmpeg to combine images into a video -> Option A
  4. Quick Check:

    Interval capture + ffmpeg video creation = correct workflow [OK]
Hint: Use delay in capture loop + ffmpeg for video [OK]
Common Mistakes:
  • Skipping delay causing fast captures
  • Using photo viewer instead of video tool
  • Uploading images without video creation
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard