16. diel - Raspberry Pi - Pripojenie kamery
V predchádzajúcej lekcii, Raspberry Pi - Vodné čerpadlo , sme si k Raspberry Pi pripojili vodné čerpadlo.
V dnešnej lekcii si ukážeme ako k nášmu Raspberry Pi pripojiť kameru a naprogramujeme si jednoduchý program, ktorý pomocou kamery urobí fotku.
Potrebné súčiastky
Na úspešné zapojenie budeme potrebovať:
- Raspberry Pi
- Raspberry Pi Kamera
Raspberry Pi kamerový modul môže byť použitý na natáčanie Full HD videa, rovnako ako na fotografovanie. Rozlíšenie fotografie sa môže meniť, kvalita videa zostáva nezmenená. Kamery vedia natáčať video v 1080p30, 720p60 a 640x480p60/90.
Kamera v1
Kamera Raspberry Pi verzia 1 je modul kamery Raspberry Pi prvej generácie. Kamera funguje so všetkými druhmi Raspberry Pi, do ktorých je možné zapojiť kameru pomocou SCI konektora. Šošovka kamery je od zvyšku tela odnímateľná, a je možné ju teda vymeniť. Na fotenie lepších snímok či zlepšenie svetelnosti však musíme kúpiť novší model. Senzor má rozlíšenie 5 megapixelov a pevné ohnisko. Dokáže zhotovovať snímky v rozlíšení až 2592x1944 px.
Kamera v2
Druhá verzia kamerového modulu pre Raspberry Pi s vyšším rozlíšením. Väčšina vecí z prvej verzie zostala zachovaná, šošovka je opäť odnímateľná a kamera sa stále dá pripojiť ku všetkým Raspberry Pi so SCI konektorom. Kamera je schopná zhotovovať fotografie s rozlíšením až 3280x2464 px. Kamerový čip sa zmenil, je teraz od značky Sony IMX219 a má 8 Megapixelov.
Kamera hq
Raspberry Pi High Quality Camera je profesionálna kamera k Raspberry Pi. Ponúka rozlíšenie 12 Mpx a vyššiu citlivosť (pixel má približne o 50% väčšiu plochu, ktorá výrazne zlepšuje kvalitu obrazu v šere), než kamera druhej verzie.
Kamera novo umožňuje výmenu objektívov. Podporuje objektívy typu C a CS. Ďalšie objektívy sa dajú nasadiť cez rôzne redukcie. Na rozdiel od predchádzajúcich verzií, kamera nie je kompatibilná so všetkými Raspberry Pi. Dajú sa síce rovnako ako predchádzajúce modely pripojiť cez konektor SCI, avšak kamera potrebuje väčší výkon. Preto kamera funguje horšie so staršími modelmi alebo s modelmi zero.
Kamera má ako jediná filter proti infračervenému žiareniu a nastaviteľné zaostrenie. Dokáže zhotovovať fotografie s rozlíšením až 4056x3040 pixelov.
Camera Module v1 | Camera Module v2 | HQ Camera | |
Rozmery | 25mm × 20mm × 9mm | 25 × 20 × 9 mm | 38 × 38 × 18 mm |
Rozlíšenie snímača | 5Mpx | 8Mpx | 12Mpx |
Rozlíšenie 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 |
Rozlíšenie čipu | 2592 × 1944 pikseli | 3280 × 2464 pikseli | 4056 x 3040 pixelov |
Výmena objektívu | nie | nie | áno |
Kompatibilný | so všetkými Raspberry Pi | so všetkými Raspberry Pi | s novšími Raspberry Pi okrem radu Zero |
Cena | 13,90 € | 24,90 € | 59,90 € |
Zapojenie je tentoraz veľmi jednoduché. Stačí kábel kamery zapojiť do kamerového portu na Raspberry Pi. Na Raspberry Pi nájdeme podlhovastý port pre kameru s plastovou krytkou. Plastovú krytku vysunieme nahor a vložíme plochý kábel modulu kamery. Kábel vložíme tak, aby konektory na spodnej strane kábla smerovali ku kontaktom portu. Nakoniec zatlačíme krytku späť do portu. Tým zaistíme, že bude kábel pevne držať v porte a nevypadne.
Povolenie kamery
Než začneme používať Raspberry Pi kameru, musíme ju najskôr povoliť v našom Raspberry Pi:
sudo raspi-config
Príkaz v termináli otvorí okno s nastavením Raspberry Pi. V tomto okne sa
môžeme pohybovať pomocou šípok. Nájdeme na položku
interfaces options
a potom na legacy camera
.
Potvrdíme, že chceme povoliť port na kameru a reštartujeme Raspberry Pi, aby
sa zmeny aplikovali:
OpenCV
Na ovládanie kamery budeme dnes používať všeobecnú knižnicu pre prácu s kamerami, a to OpenCV. Pomocou OpenCV a pythonu sa vytvárajú najrôznejšie UI (Umelá inteligencia) na rozpoznávanie tváre. OpenCV je opensource knižnica pôvodne od spoločnosti intel. V dnešnej dobe je verejne dostupná a na jej vývoji spolupracuje niekoľko firiem a programátorských nadšencov. Viac si o tejto knižnici a ako funguje môžete prečítať tu.
Nainštalujme si knižnicu openCV:
sudo apt-get install python3-opencv
Snímka z kamery
Teraz si napíšeme jednoduchý program, ktorý nám urobí snímku z našej kamery a uloží ju 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 importom knižníc. Importujeme si knižnicu
cv2 (OpenCV)
. Na druhom riadku si uložíme do premennej
kameraPozice
pozíciu, na ktorej sa naša kamera nachádza.
Štandardne sa integrovaná kamera v počítači nachádza na pozícii 0, na
Raspberry Pi by to malo byť úplne rovnaké. Vezmeme teda knižnicu
cv2
ak nej pridáme príkaz VideoCapture
, ktorému
nastavíme hodnotu 0
.
Ďalej si do premennej vyhodnoceni
uložíme bool hodnotu
True
. Premennú vyhodnoceni
budeme používať na
ovládanie slučky while
, aby nebola nekonečná.
Potom vidíme slučku while
. Do slučky vložíme dve premenné,
rec
a fotka
. Použijeme premenou
kameraPozice
pre zistenie pozície zariadenia, az tejto pozície
začneme čítať pomocou funkcie read()
.
Tento príkaz nám vyhodí dve hodnoty. Prvú hodnotu uložíme do
rec
(hodnota bude v tvare bool). Bude to hodnota ktorá vyhodnocuje
či sa snímka vytvorila (True
) alebo nie (False
).
Druhou hodnotou bude samotná fotka vo formáte poľa snímok. Túto hodnotu
budeme ukladať do premennej fotka
.
Pokračovať budeme tým, že vezmeme knižnicu cv2
s príkazom
imwrite
. Príkaz imwrite
potrebuje dve hodnoty, a to
názov nového súboru a poľa snímok. Hodnotu ktorá má byť názov teda
zapíšeme ako text novaFotka.jpg
(na konci mena musí byť formát
fotky). Ako druhú hodnotu potom použijeme premennú fotka
.
Nakoniec nastavíme premennú vyhodnoceni
na
False
.
Vysvetlenie
Program sa informuje o pozícii kamery. Spustí sa slučka s hodnotou
True
. Bude sa vykonávať neustále, kým pozícia kamery nedostane
hodnotu True
. Keď pozícia kamery dostane hodnotu
True
, do premennej fotka sa zapíše zhotovený snímok ako pole
snímok. Pomocou knižnice cv2
potom pole snímok uloží ako
fotku. Keď je fotka uložená, slučka získa hodnotu False
a
program sa ukončí.
Verím, že sa vám pripojenie a nakódovanie kamery podarilo. Svoje dojmy a prípadné otázky môžete zanechať v diskusii pod článkom 🙂
V ďalšej lekcii, Raspberry Pi - Zavlažovač rastlín , si k Raspberry Pi pripojíme vodné čerpadlo, senzor vlhkosti pôdy a reproduktor.