MobilePenBerry/camera.md
2021-12-27 12:39:28 +01:00

82 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Camera
Most models of the RPi have a camera port but pay attention as the RPi Zero has a smaller port and needs a smaller ribbon cable.
There are two types of camera modules:
- standard: take pictures in normal light
- NoIR: without infrared filter, you can take pictures in the dark with an infrared light source
## Connect the module
1. look for the camera module port on your RPi
2. pull up the edges of the ports plastic clip
3. insert the camera ribbon cable and make sure the contacts face the ribbon cable connectors
4. push down the plastic clip into place
## Activate your camera
Power up your RPi and start the config tool with `sudo raspi-config`. Scroll down to "enable camera" and set it to "Yes". Now restart your RPi to load all librarys.
## Taking pictures from cli
Raspbian has it's own librarys to interact with the camera. To take pictures you can use the command `raspistill`. Here is a little list of what is possible:
- Take a jpg picture (standard): `raspistill -o image.jpg`
- Take a png picture (or bmp/gif): `raspistill -o image.png -e png`
- Take a picture without preview: `raspistill -o image.jpg -n`
- Wait 3000ms to take the picture: `raspistill -o image.jpg -t 3000`
- set the width and height of the picture: `raspistill -o image.jpg -w 640 -h 480`
- set the quality of the picture (from 0 to 100%): `raspistill -o image.jpg -q 20`
- take a series of pictures all 5 seconds for a whole hour (3600000 seconds): `raspistill -o image_%04d.jpg -tl 5000 -t 3600000` (later you can stick it together with ffmpeg to get a movie)
## Taking videos from cli
Next to pictures you can take videos
- take a video for 5 seconds: `raspivid -o video.h264 -t 50000` (to never end set t to 0)
- set width and height: `raspivid -o video.h264 -t 50000 -w 1280 -h 720`
- set the bitrate: `raspivid -o video.h264 -t 50000 -b 3500000`
- set the framerate: `raspivid -o video.h264 -t 50000 -f 10`
- send the video stream to sdtout: `raspivid -t 50000 -o - `
To convert videos from H264 to mp4 you can use gpac:
```bash
sudo apt-get install gpac
MP4Box -fps 30 -add video.h264 video.mp4
```
## Control the camera with python
You can control your camera using python libraries (preinstalled on Raspbian).
Open an editor and paste the following, save it like `camera.py`.
```python
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
sleep(5)
camera.stop_preview()
```
The camera should be shown 5 seconds and then close.
There are several functions/filters you can use:
- Rotate (in degree): `camera.rotation = 180`
- Make the camera preview see-through by setting an alpha level: `camera.start_preview(alpha=200)`
- Take a picture (its important to sleep for at least two seconds before capturing an image because this gives the cameras sensor time to sense the light levels)
```python
camera.start_preview()
sleep(5)
camera.capture('/home/pi/Desktop/image.jpg')
camera.stop_preview()
```
- record a video:
```python
camera.start_recording('/home/pi/Desktop/video.h264')
sleep(5)
camera.stop_recording()
```
- change the resolution: `camera.resolution = (2592, 1944)`
- maximum resolution is 2592x1944 for still photos,
- maximum resolution is 1920x1080 for video recording,
- minimum resolution is 64x64
- change the framerate: `camera.framerate = 15`
- 0 is minimum
- 15 is maximum
- add text to your image: `camera.annotate_text = "Hello world!"`
# Source and more
[RaspberryPi.com](https://www.raspberrypi.com/documentation/accessories/camera.html)