Raspberry Pi: Camera V2

From Embedded Lab Vienna for IoT & Security
Jump to: navigation, search


This documentation is about the usage of the Raspberry Pi Module Camera V2. It describes basic usage via the Shell and advanced usage with Python programming.


  • Hardware: Raspberry Pi
  • Operating system: Rasbian
  • Interpreter: Python or Python3


Firstly you have to Plug in The Camera Module with the Ribbon Cable. Then you have to allow the usage of the Camera interface:

sudo raspi-config
-> Interfacing Options
-> Camera
-> Enable it

Shell usage

Rasbian already supplies pre-installed shell scripts for the camera module usage. The is one for Capturing Image raspistill and one for capturing video raspivid .

Capturing images

The simplest way to take is py entering the following command:

raspistill -o ./image0.jpg

You can easily adjust the pixel height and with by using the -w and -h parameters like this:

raspistill -o ./image1.jpg -w 640 -h 480

For advanced use its suggested to read the output of the following command:

raspistill --help

Capturing video

To capture a video you need to use the raspivid command like this

raspivid -o ./video.h264

h264 is a video codec that is compatible with almost every device that can play video. The pi camera can also output mp4 files. For further information use

raspivid --help

Python Usage

As well as for all Raspberry accessories, the camera module also comes with a really good python library for both taking still and capturing videos. On the following paragraph I will only cover taking images for the full documentation read the picamera.readthedocs.io documentation.

Taking and exporting stills

The library uses the start_preview() and stop_preview() to start and end the preview on the screen with out capturing a photograph. The delay is used to frame the shot. It is also possible to project the preview for a long amount if time while taking multiple photos with a different implementation. Then the capture(Filename) function captures the photo and saves it to the defined directory with the following filename. There are multiple possible image formats by using one of the corresponding filenames: '.jpeg','.png','.gif','.bmp','.yuv','.rgb','.rgba','.bgr', or '.bgra'

from picamera import PiCamera
from time import sleep

camera = PiCamera()


Exposure Triangle

The cameras module allows to manipulate two of the three values of the exposure triangle. Due to that the fact that the module has no lens the aperture stays fixed and its only to adjust the shutter speed and the ISO. Where as only the the ISOs 100, 200, 400, 800 and 1600 can be chosen. If you setting the ISO value to null it will be calculated by the camera module it self also known as auto ISO. The shutter speed value can be adjusted as wanted but the value gets set in microseconds. If the value gets set to zero it is also in auto mode.

camera.shutter_speed = 0
camera.iso = 0

White Balance

The awb_mode variable basically sets white balance to one of the following values to get an more accurate color of white surfaces. The 'auto' mode is usually suited for a large variety of cases and covers everyday photography.

camera.awb_mode = 'auto'
Auto White Balance Modes

Tone and Presence

Values like Brightness, Contrast, Sharpness and Saturation can be adapted to change the overall look of the image. There for the brightness value can be assigned with an integer value between 0 and 100, the contrast can be assigned with an integer value between -100 and 100, the sharpness can be assigned with an integer value between -100 and 100 and the saturation can also be assigned with an integer value between -100 and 100

camera.brightness = 50
camera.contrast = 50
camera.sharpness = 50
camera.saturation = 50

Image Effects

The camera library has also a ton of image effects to play around with. The can be used by setting the image_effect in the already known manner:

camera.image_effect = 'sketch'
Image effects

Used Hardware

Raspberry Pi 3 Model B+

Rasperry Pi Camera Modul V2, 8MP