28 Raspberry Pi kaameramoodul
Tänases tunnis tutvume Raspberry Pi kaameramooduliga. Selle raames teeme Raspberry Pi kaameraga pilte, töötleme neid ning lõpuks proovime luua ka rakendust, mis looks kaamerale kasutajaliidese.
NB! Selles õppematerjalis ei ole sisulist vahet, kas kasutada Raspberry Pi 4 või 3 seni kuni kasutad operatsioonisüsteemi Raspberry Pi OS-i mille esimeses peatükkis paigaldasime mis baseerub Debain 11.3 versioonil. Kui sa ei ole kindel milline Debiani versiooni sinu Raspberry Pi-le paigaldatud on siis kirjuta käsureale käsk cat /etc/debian_version
kui ilmub rida 11.3 oled õige versiooni peal.
Rapsberry Pi kaamera ühendamine
Raspberry Pi kaameramoodul on varustatud lintkaabliga, mis tuleb ühendada Raspberry Pi-ga. Selle jaoks lülita Raspberry Pi esmalt välja, otsi üles Rapsberry Pi keskel olev kaamera ühenduskoht ning tõsta selle peal olev kattev osa ettevatlikult ühenduse eest ära. Seejärel sisest kaamera nii:
Kui olema kaamera füüsiliselt Raspberry Pi-ga ühendanud siis lülitame Raspberry Pi sisse. Selle jaoks ühendame Raspberry Pi vooluvõrku taaskord.
Kui oleme Raspberry Pi tööle saanud siis avame terminali ning sisestame sinna käsu: sudo raspi-config
millega saab Raspberry Pi konfiguratsiooni redigeerida. Kui oleme konfiguratsiooni menüüm lahti teinud siis järgmise sammuna peame lubama kaamera mooduli, selle jaoks mine Interface Options -> Legacy Camera ning küsimusele “Would you like to enable legacy camera support” vali vastusevariant Yes või Jah. Seejärel menüüst lahkudest küsib Raspberry Pi, et kas soovid teha kohe restarti ning teeme restardi kohe ära.
Jääb üle katsetada, kas meie kaamera hakkas tööle. Selle jaoks avame taaskord terminali ning proovime teha kaameraga pilti. Kasutame käsku raspistill -o Desktop/pilt.jpg
mille peale peaks avanema kaamera eelvaade ning kolme sekundi pärast tegema pilti. Kontrolli, kas töölaua kausta tekkis pilt.
Pythoni koodiga kaamera juhtimine
Järgnevalt proovime teha kaameraga pilti kasutades Pythoni koodi. Selle jaoks avame ülemisest vasakust menüüst Programmeerimine -> Thonny Python IDE.
Katsetamiseks loome sellise programmi, mis käivitamisel kuvab meile viieks sekundiks ekaanile praegust kaamerapilt. Pärast seda viit sekundit lülitatakse programm välja. Nii saame lihtsalt kontrollida kuidas kaamerapilt välja näeb.
Kaamera nõuab selle juhtimiseks teeki nimega picamera ning sealt seest spetsifiiliselt PiCamera moodulit. Seega kui soovime luua Pythoni programmi, mis kaamerat kontrolliks siis peame alustama oma koodi reaga from picamera import PiCamera
millega me selle teegi enda programmi laeme.
Järgmiseks tekib küsimus kuidas teha nii, et kaamerapilti näidatakse ainult viis sekundit, mitte igavesti. Selleks paigaldame teise teegi nimega time ja sealt spetsiifilisemalt sleep teegi reaga: from time import sleep
Järgmiseks loome uue objekti, mis hakkab meie programmis kujutama kaamerat ning mille abil me kaamerat kontrollida saame. Kaamera objekti saab luua näiteks reaga: kaamera = PiCamera()
Järgnevalt ütleme kaamerale, et ta hakkaks meile eelvaadet kuvama reaga: kaamera.start_preview()
Seejärel peame ütlema mitu sekundit me tahame, et eelvaadet näidataks enne selle sulgemist. Seega anname tervele programmile käsu mitte midagi teha viis sekundit reaga: sleep(5)
Kõige lõpuks sulgeme eelvaate reaga: kaamera.stop_preview()
Kokku peaks meie programm välja nägema selline:
from picamera import PiCamera from time import sleep kaamera = PiCamera() kaamera.start_preview() sleep(5) kaamera.stop_preview()
Pyhoniga pildistamine ja piltidele efektide lisamine
Pythoni koodi abil saab juhtida kaamerat ka pilti tegema ja selle pildi seadeid muutma. Lisaks sellele on võimalik kaamerat ka videot salvestama panna. Esmalt vaatame kuidas muuta eelmises osas loodud programmi nii, et see teeks pärast eelvaadet ka pilti ning salvestaks selle meie Raspberry Pi peale.
See on tegelikult väga lihtne, sest piisab ainult sellest, et pärast viit sekundit ootamist annaksime kaamerale käsu pilt teha ning see salvestada. Kaamerale pildistamine käsk on näiteks: kaamera.capture('pilt.jpg')
kus kaamera on PiCamera objekt, mille oleme eelnevalt loonud, capture
on käsk millega pilt tehakse ja see salvestatakse ning ‘pilt.jpg’ on faili nimi, mida salvestatakse. Siinjuures on oluline salvestada pilt lõpuga .jpg, sest see annab operatsioonisüsteemile märku, et salvestatud faili näol on tegemist pildifailiga.
Lisa eelnevalt loodud programmile koodirida, millega pilt salvestatakse. Pane programm tööle. Kas pilt tehti ära? Kas leiad ka kuhu pilt salvestati? Pilt salvestati samasse kohta, kuhu olid varasemalt salvestanud oma Pythoni programmi.
Proovime nüüd pilti pisut muuta. Esmalt võiksime muuta kaamera heledust ja tumedust. Selle jaoks saab kaamera heledust muuda, kui seadistame pärast kaamera eelvaate algust selle heledustaseme. Katsetame seda nii, et lisame ühe koodirea pärast kaamera eelvaate käivitamist, milleks on näiteks kaamera.brightness = 20
. Kaamera heledustase on 0 ja 100 vahel. Vaikimisi on see seadistatud 50 peale. Lisa see rida oma programmi ja katseta, kas pilt on tumedam? Proovi nüüd seadistada pilt hoopis heledamaks, kas toimis?
Järgmisena proovime lisada pildile mõnda efekti, mida Raspberry Pi kaamera puhul on mitmeid aga esmalt proovime lisada negatiivi efekti, kus värvid on pööratud tagurpidi. Selle jaoks saame lisada programmile rea, kus määrame kaamerale efekti näiteks nii: kaamera.image_effect = 'negative'
. Antud rida peaks asuma taaskord pärast seda, kui oleme käivitanud kaamera eelvaate.
Proovi mõnda muud efekti ka sellest nimekirjast: negative,
solarize,
sketch,
denoise,
emboss,
oilpaint,
hatch,
gpen,
pastel,
watercolor,
film,
blur,
saturation,
colorswap,
washedout,
posterise,
colorpoint,
colorbalance,
cartoon,
deinterlace1,
deinterlace2
.
Või võid proovida hoopis sellist koodi, mis näitab sulle kõik võimalikud efektid ette ning tutvustab neid ka nimepidi:
camera.start_preview() for effect in camera.IMAGE_EFFECTS: camera.image_effect = effect camera.annotate_text = "Efekt: %s" % effect sleep(3) camera.stop_preview()
Pythoniga video salvestamine
Pythoniga on võimalik ka väga lihtsalt videot salvestada. Piisab vaid sellest, et Pi kaamerale anda käsk salvestamise alustamiseks ning ka selle lõpeatamiseks. Salvestamise alustamiseks on käsk näiteks kaamera.start_recording('video.h264')
kus kaamera on meie eelnevalt loodud Raspberry Pi kaamera objekt ning ‘video.h264’ on salvestamise faili nimi. Kas oskad juba pakkuda milline võiks olla käsk salvestamise lõpetamiseks? See on loomulikult kaamera.stop_recording()
.
Sarnaselt piltide tegemisele saame ka video salvetamisel lisada erinevaid efekte. Katseta erinevate efektide lisamisega ka video salvestamisel.