Taking still pictures lets you save moments or objects as image files. This is useful for projects like photography, security, or documentation.
Capturing still images in Raspberry Pi
from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() sleep(2) # Wait for camera to adjust camera.capture('/home/pi/image.jpg') camera.stop_preview()
Use sleep to give the camera time to adjust before capturing.
The file path in capture() is where the image will be saved.
camera.capture('/home/pi/picture1.jpg')camera.capture('/home/pi/photos/photo_2024.jpg')camera.capture('/home/pi/image.png')This program starts the camera preview, waits 3 seconds for the camera to adjust, captures a still image, saves it as test_image.jpg, then stops the preview and prints a confirmation message.
from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() sleep(3) # Let camera adjust camera.capture('/home/pi/test_image.jpg') camera.stop_preview() print('Image captured and saved as test_image.jpg')
Make sure the Raspberry Pi camera module is enabled in the Raspberry Pi settings.
Use absolute file paths to avoid confusion about where images are saved.
Camera preview helps you see what the camera sees before capturing.
Use the PiCamera library to control the Raspberry Pi camera.
Start the preview, wait a moment, then capture and save the image.
Save images with clear file paths and names for easy access.
Practice
capture() method in the PiCamera library when capturing still images?Solution
Step 1: Understand the role of
Thecapture()capture()method is used to take a still photo with the Raspberry Pi camera.Step 2: Identify what
It saves the captured image to a file path you specify, storing the photo on disk.capture()does with the photoFinal Answer:
To take a photo and save it to a file -> Option AQuick Check:
capture()saves image = C [OK]
- Confusing capture() with start_preview()
- Thinking capture() only shows image without saving
- Mixing capture() with camera stop methods
Solution
Step 1: Recall the PiCamera method to start preview
The correct method to start the camera preview isstart_preview()called on the camera object.Step 2: Check method name and syntax
The method is lowercase with underscore:camera.start_preview(). Other options have wrong casing or order.Final Answer:
camera.start_preview() -> Option DQuick Check:
Correct method name = A [OK]
- Using camelCase instead of snake_case
- Reversing method and object order
- Adding extra dots or missing underscores
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
sleep(2)
camera.capture('/home/pi/image.jpg')
camera.stop_preview()Solution
Step 1: Analyze the preview and sleep timing
The preview starts, then the program waits 2 seconds allowing the camera to adjust.Step 2: Capture and save the image after preview
After waiting, the image is captured and saved to '/home/pi/image.jpg', then preview stops.Final Answer:
The camera preview shows for 2 seconds, then saves image.jpg -> Option BQuick Check:
Preview + sleep + capture = A [OK]
- Assuming sleep is too short causes error
- Thinking stop_preview() prevents saving
- Believing start_preview() is missing
from picamera import PiCamera
camera = PiCamera()
camera.capture('photo.jpg')
camera.start_preview()Solution
Step 1: Check the order of preview and capture
The preview should start before capturing to allow camera to adjust and focus.Step 2: Identify the mistake in code order
Here, capture is called before start_preview(), which can cause poor image quality or errors.Final Answer:
The preview should start before capturing the image -> Option AQuick Check:
Preview before capture = B [OK]
- Calling capture before preview starts
- Assuming filename alone is invalid path
- Thinking import order affects capture
Solution
Step 1: Understand how to create unique filenames in a loop
Using an f-string withf'image{i}.jpg'correctly inserts the loop variable into the filename.Step 2: Check each option for correct syntax and output
for i in range(1,4): camera.capture(f'image{i}.jpg') uses f-string with range(1,4) producing 'image1.jpg', 'image2.jpg', 'image3.jpg'. for i in range(3): camera.capture('image{i+1}.jpg') uses single quotes without f-string, so filename is literal. for i in range(1,4): camera.capture('image' + i + '.jpg') tries to add string and int without conversion, causing error. for i in range(1,4): camera.capture('image{}.jpg'.format(i+1)) adds 1 to i incorrectly, producing 'image2.jpg', 'image3.jpg', 'image4.jpg'.Final Answer:
for i in range(1,4): camera.capture(f'image{i}.jpg') -> Option CQuick Check:
f-string with correct range = D [OK]
- Using string concatenation without converting int to str
- Forgetting f-string syntax for variable insertion
- Incorrect range causing wrong filenames
Ready to prove it?
Pass the test and this pattern moves unknown
