Lekce 16 - Raspberry Pi - Připojení kamery
V předchozí lekci, Raspberry Pi - Vodní čerpadlo, jsme si k Raspberry Pi připojili vodní čerpadlo.
V dnešní lekci si ukážeme, jak k našemu Raspberry Pi připojit kameru a naprogramujeme si jednoduchý program, který pomocí kamery udělá fotku.
Potřebné součástky
K úspěšnému zapojení budeme potřebovat:
- Raspberry Pi
- Raspberry Pi Kamera
Typy kamer
Raspberry Pi kamerový modul může být použit k natáčení Full HD videa, stejně jako k pořizování fotografií. Rozlišení fotografie se může měnit, kvalita videa zůstává nezměněna. Kamery umí natáčet video v 1080p30, 720p60 a 640x480p60/90.

Kamera v1
Kamera Raspbery Pi verze 1 je modul kamery Raspberry Pi první generace. Kamera funguje se všemi druhy Raspberry Pi, do kterých lze zapojit kameru pomocí SCI konektoru. Čočka kamery je od zbytku těla odnímatelná, a lze ji tedy vyměnit. K focení lepších snímků či zlepšení světelnosti však musíme koupit novější model. Senzor má rozlišení 5 megapixelů a pevné ohnisko. Dokáže pořizovat snímky v rozlišení až 2592x1944 px.
Kamera v2
Druhá verze kamerového modulu je pro Raspberry Pi s vyšším rozlišením. Většina věcí z první verze zůstala zachována, čočka je opět odnímatelná a kamera se stále dá připojit ke všem Raspberry Pi s SCI konektorem. Kamera je schopná pořizovat fotografie s rozlišením až 3280x2464 px. Kamerový čip se změnil, je nyní od značky Sony IMX219 a má 8 Megapixelů.
Kamera hq
Raspberry Pi High Quality Camera je profesionální kamera k Raspberry Pi. Nabízí rozlišení 12 Mpx a vyšší citlivost (pixel má přibližně o 50 % větší plochu, která výrazně zlepšuje kvalitu obrazu v šeru), než kamera druhé verze.
Kamera nově umožňuje výměnu objektivů. Podporuje objektivy typu C a CS. Další objektivy se dají nasadit přes různé redukce. Na rozdíl od předchozích verzí, kamera není kompatibilní se všemi Raspberry Pi. Lze ji sice, stejně jako předchozí modely, připojit přes konektor SCI, avšak kamera potřebuje větší výkon. Proto kamera funguje hůře se staršími modely nebo s modely zero.
Kamera má jako jediná filtr proti infračervenému záření a nastavitelné zaostření. Dokáže pořizovat fotografie o rozlišení až 4056x3040 pixelů.

Camera Module v1 | Camera Module v2 | HQ Camera | |
Rozměry | 25mm × 20mm × 9mm | 25 × 20 × 9 mm | 38 × 38 × 18 mm |
Rozlišení snímače | 5Mpx | 8Mpx | 12Mpx |
Rozlišení videa | 1080p30, 720p60 a 640×480p60/90 | 1080p30, 720p60 a 640 × 480p60/90 | 1080p30, 720p60 a 640×480p60/90 |
Čip | OmniVision OV5647 | Sony IMX219 | Sony IMX477 |
Rozlišení čipu | 2592 × 1944 pixelů | 3280 × 2464 pixelů | 4056 x 3040 pixelů |
Výměna objektivu | ne | ne | ano |
Kompatibilní | se všemi Raspberry Pi | se všemi Raspberry Pi | s novějšími Raspberry Pi kromě řady Zero |
Cena | 349,00 Kč | 669,00 Kč | 1 499,00 Kč |
Zapojení
Zapojení je tentokrát velmi jednoduché. Stačí kabel kamery zapojit do kamerového portu na Raspberry Pi. Na Raspberry Pi najdeme podlouhlý port pro kameru s plastovou krytkou. Plastovou krytku vysuneme nahoru a vložíme plochý kabel modulu kamery. Kabel vložíme tak, aby konektory na spodní straně kabelu směřovaly ke kontaktům portu. Nakonec zatlačíme krytku zpět do portu. Tím zajistíme, že bude kabel pevně držet v portu a nevypadne.

Povolení kamery
Než začneme používat Raspberry Pi kameru, musíme ji nejprve povolit v našem Raspberry Pi:
sudo raspi-config
Příkaz v terminálu otevře okno s nastavením Raspberry Pi. V tomto okně
se můžeme pohybovat pomocí šipek. Najedeme na položku
interfaces options
a poté na legacy camera
.
Potvrdíme, že chceme povolit port na kameru a restartujeme Raspberry Pi, aby
se změny aplikovaly:

OpenCV
K ovládání kamery budeme dnes používat obecnou knihovnu pro práci s kamerami, a to OpenCV. Pomocí OpenCV a pythonu se vytvářejí nejrůznější UI (Umělá inteligence) na rozpoznávání obličeje. OpenCV je opensource knihovna původně od společnosti intel. V dnešní době je veřejně dostupná a na jejím vývoji spolupracuje několik firem a programátorských nadšenců. Více si o této knihovně a jak funguje můžete přečíst zde.
Nainstalujme si knihovnu openCV:
sudo apt-get install python3-opencv
Snímek z kamery
Nyní si napíšeme jednoduchý program, který nám udělá snímek z naší kamery a uloží ho do Raspberry Pi:
import cv2 kameraPozice = cv2.VideoCapture(0) vyhodnoceni = True while(vyhodnoceni): rec , fotka = kameraPozice.read() cv2.imwrite("novaFotka.jpg",fotka) vyhodnoceni = False
Začneme tradičním importem knihoven. Importujeme si knihovnu
cv2 (OpenCV)
. Na druhém řádku si uložíme do proměnné
kameraPozice
pozici, na které se naše kamera nachází.
Standardně se integrovaná kamera v počítači nachází na pozici 0, na
Raspberry Pi by to mělo být úplně stejné. Vezmeme tedy knihovnu
cv2
a k ní přidáme příkaz VideoCapture
, kterému
nastavíme hodnotu 0
.
Dále si do proměnné vyhodnoceni
uložíme bool hodnotu
True
. Proměnnou vyhodnoceni
budeme používat k
ovládání smyčky while
, aby nebyla nekonečná.
Poté vidíme smyčku while
. Do smyčky vložíme dvě
proměnné, rec
a fotka
. Použijeme proměnou
kameraPozice
pro zjištění pozice zařízení, a z této pozice
začneme číst pomocí funkce read()
.
Tento příkaz nám vyhodí dvě hodnoty. První hodnotu uložíme do
rec
(hodnota bude ve tvaru bool). Bude to hodnota, která
vyhodnocuje, zda se snímek pořídil (True
), nebo ne
(False
). Druhou hodnotou bude samotná fotka ve formátu pole
snímků. Tuto hodnotu budeme ukládat do proměnné fotka
.
Pokračovat budeme tím, že vezmeme knihovnu cv2
s příkazem
imwrite
. Příkaz imwrite
potřebuje dvě hodnoty, a
to název nového souboru a pole snímků. Hodnotu, která má být název tedy
zapíšeme jako text novaFotka.jpg
(na konci jména musí být
formát fotky). Jako druhou hodnotu pak použijeme proměnnou
fotka
. Nakonec nastavíme proměnnou vyhodnoceni
na
False
.
Vysvětlení
Program se informuje o pozici kamery. Spustí se smyčka s hodnotou
True
. Bude se provádět neustále, dokud pozice kamery nedostane
hodnotu True
. Když pozice kamery dostane hodnotu
True
, do proměnné fotka se zapíše pořízený snímek jako pole
snímků. Pomocí knihovny cv2
pak pole snímků uloží jako
fotku. Když je fotka uložena, smyčka získá hodnotu False
a
program se ukončí.
Věřím, že se vám připojení a nakódování kamery podařilo. Své dojmy a případné dotazy můžete zanechat v diskusi pod článkem 🙂
V další lekci, Raspberry Pi - Gyroskop, si k Raspberry Pi připojíme gyroskop.