7.3 KiB
Pildi jäädvustamine - Raspberry Pi
Selles õppetunni osas lisate Raspberry Pi-le kaamerasensori ja loete sellest pilte.
Riistvara
Raspberry Pi vajab kaamerat.
Kaamera, mida kasutate, on Raspberry Pi kaameramoodul. See kaamera on loodud töötama Raspberry Pi-ga ja ühendub spetsiaalse pistiku kaudu Pi-le.
💁 See kaamera kasutab Camera Serial Interface'i, protokolli Mobile Industry Processor Interface Alliance'ist, tuntud kui MIPI-CSI. See on spetsiaalne protokoll piltide edastamiseks.
Kaamera ühendamine
Kaamera saab Raspberry Pi-ga ühendada lintkaabli abil.
Ülesanne - kaamera ühendamine
-
Lülitage Pi välja.
-
Ühendage kaameraga kaasas olev lintkaabel kaameraga. Selleks tõmmake õrnalt hoidikus olevat musta plastklambrit, nii et see veidi välja tuleks, ja libistage kaabel pistikusse, sinine külg objektiivist eemale, metallist kontaktid objektiivi poole. Kui kaabel on täielikult sees, lükake must plastklamber tagasi oma kohale.
Animatsiooni, mis näitab, kuidas klambrit avada ja kaablit sisestada, leiate Raspberry Pi kaameramooduli dokumentatsioonist.
-
Eemaldage Grove Base Hat Pi-lt.
-
Viige lintkaabel läbi Grove Base Hat kaamera ava. Veenduge, et kaabli sinine külg oleks suunatud analoogportide A0, A1 jne poole.
-
Sisestage lintkaabel Pi kaamerapistikusse. Tõmmake jälle must plastklamber üles, sisestage kaabel ja lükake klamber tagasi. Kaabli sinine külg peaks olema suunatud USB- ja Ethernet-pistikute poole.
-
Paigaldage Grove Base Hat tagasi.
Kaamera programmeerimine
Nüüd saab Raspberry Pi kaamerat programmeerida, kasutades PiCamera Python'i teeki.
Ülesanne - pärandkaamera režiimi lubamine
Kahjuks muutus Raspberry Pi OS Bullseye väljaandega kaamera tarkvara, mis tuli operatsioonisüsteemiga kaasa, ja vaikimisi PiCamera enam ei tööta. Töös on asendus nimega PiCamera2, kuid see pole veel kasutamiseks valmis.
Praegu saate oma Pi seadistada pärandkaamera režiimi, et PiCamera töötaks. Kaamera pistik on vaikimisi keelatud, kuid pärandkaamera tarkvara lubamine aktiveerib pistiku automaatselt.
-
Lülitage Pi sisse ja oodake, kuni see käivitub.
-
Käivitage VS Code, kas otse Pi-l või ühendage Remote SSH laienduse kaudu.
-
Käivitage terminalis järgmised käsud:
sudo raspi-config nonint do_legacy 0 sudo rebootSee lülitab sisse pärandkaamera tarkvara ja taaskäivitab Pi, et muudatus jõustuks.
-
Oodake, kuni Pi taaskäivitub, ja käivitage VS Code uuesti.
Ülesanne - kaamera programmeerimine
Programmeerige seade.
-
Looge terminalis
pikasutaja kodukataloogi uus kaust nimegafruit-quality-detector. Looge selles kaustas fail nimegaapp.py. -
Avage see kaust VS Code'is.
-
Kaameraga suhtlemiseks saate kasutada PiCamera Python'i teeki. Installige selle jaoks Pip pakett järgmise käsuga:
pip3 install picamera -
Lisage oma
app.pyfaili järgmine kood:import io import time from picamera import PiCameraSee kood impordib vajalikud teegid, sealhulgas
PiCamerateegi. -
Lisage sellele koodile alljärgnev, et kaamera initsialiseerida:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0 time.sleep(2)See kood loob PiCamera objekti ja määrab resolutsiooniks 640x480. Kuigi toetatud on ka kõrgemad resolutsioonid (kuni 3280x2464), töötab pildiklassifikaator palju väiksemate piltidega (227x227), seega pole vaja jäädvustada ja saata suuremaid pilte.
Rida
camera.rotation = 0määrab pildi pööramise. Lintkaabel tuleb kaamera alt, kuid kui teie kaamera on pööratud, et hõlbustada objekti suunamist, mida soovite klassifitseerida, saate seda rida muuta vastavalt pöördenurkadele.Näiteks, kui riputate lintkaabli üle millegi nii, et see on kaamera ülaosas, määrake pööramine väärtuseks 180:
camera.rotation = 180Kaamera käivitumine võtab paar sekundit, seetõttu on lisatud rida
time.sleep(2). -
Lisage sellele koodile alljärgnev, et jäädvustada pilt binaarandmetena:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)See kood loob
BytesIOobjekti binaarandmete salvestamiseks. Pilt loetakse kaamerast JPEG-failina ja salvestatakse sellesse objekti. Sellel objektil on positsiooniindikaator, mis näitab, kus andmetes ollakse, et vajadusel saaks rohkem andmeid lõppu kirjutada, seega ridaimage.seek(0)viib positsiooni tagasi algusesse, et hiljem saaks kõiki andmeid lugeda. -
Lisage sellele alljärgnev, et salvestada pilt faili:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())See kood avab faili nimega
image.jpgkirjutamiseks, loeb kõik andmedBytesIOobjektist ja kirjutab need faili.💁 Pilti saab jäädvustada otse faili, mitte
BytesIOobjekti, andes faili nimecamera.capturekäsule. Põhjus, miks kasutatakseBytesIOobjekti, on see, et hiljem selles õppetunnis saate pildi saata oma pildiklassifikaatorile. -
Suunake kaamera millelegi ja käivitage see kood.
-
Pilt jäädvustatakse ja salvestatakse
image.jpgnimega praegusesse kausta. Näete seda faili VS Code'i failihalduris. Valige fail, et pilti vaadata. Kui see vajab pööramist, uuendage ridacamera.rotation = 0vastavalt ja tehke uus pilt.
💁 Selle koodi leiate kaustast code-camera/pi.
😀 Teie kaameraprogramm õnnestus!
Lahtiütlus:
See dokument on tõlgitud AI tõlketeenuse Co-op Translator abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest.




