7.7 KiB
Kupiga picha - Raspberry Pi
Katika sehemu hii ya somo, utaongeza kihisi cha kamera kwenye Raspberry Pi yako, na kusoma picha kutoka kwake.
Vifaa
Raspberry Pi inahitaji kamera.
Kamera utakayotumia ni Raspberry Pi Camera Module. Kamera hii imetengenezwa kufanya kazi na Raspberry Pi na inaunganishwa kupitia kiunganishi maalum kwenye Pi.
💁 Kamera hii hutumia Camera Serial Interface, itifaki kutoka Mobile Industry Processor Interface Alliance, inayojulikana kama MIPI-CSI. Hii ni itifaki maalum ya kutuma picha.
Unganisha kamera
Kamera inaweza kuunganishwa na Raspberry Pi kwa kutumia kebo ya ribbon.
Kazi - unganisha kamera
-
Zima Pi.
-
Unganisha kebo ya ribbon inayokuja na kamera kwenye kamera. Ili kufanya hivyo, vuta kwa upole kipande cha plastiki cheusi kwenye kishikiliaji ili kitoke kidogo, kisha telezesha kebo kwenye soketi, upande wa bluu ukiwa mbali na lenzi, na vipande vya pini za chuma vikiwa karibu na lenzi. Mara kebo itakapokuwa ndani kabisa, sukuma kipande cha plastiki cheusi kurudi mahali pake.
Unaweza kupata uhuishaji unaoonyesha jinsi ya kufungua kipande na kuingiza kebo kwenye Raspberry Pi Getting Started with the Camera module documentation.
-
Ondoa Grove Base Hat kutoka Pi.
-
Pitisha kebo ya ribbon kupitia nafasi ya kamera kwenye Grove Base Hat. Hakikisha upande wa bluu wa kebo unakabili bandari za analog zilizoandikwa A0, A1 nk.
-
Ingiza kebo ya ribbon kwenye soketi ya kamera kwenye Pi. Tena, vuta kipande cha plastiki cheusi juu, ingiza kebo, kisha sukuma kipande kurudi mahali pake. Upande wa bluu wa kebo unapaswa kuelekea bandari za USB na ethernet.
-
Rudisha Grove Base Hat.
Programu ya kamera
Raspberry Pi sasa inaweza kupangwa kutumia kamera kwa kutumia maktaba ya Python ya PiCamera.
Kazi - wezesha hali ya kamera ya urithi
Kwa bahati mbaya, na kutolewa kwa Raspberry Pi OS Bullseye, programu ya kamera iliyokuja na OS ilibadilika, ikimaanisha kwa default PiCamera haifanyi kazi tena. Kuna mbadala unaotengenezwa, unaoitwa PiCamera2, lakini bado haujawa tayari kutumika.
Kwa sasa, unaweza kuweka Pi yako katika hali ya kamera ya urithi ili kuruhusu PiCamera kufanya kazi. Soketi ya kamera pia imezimwa kwa default, lakini kuwasha programu ya kamera ya urithi kunawezesha soketi moja kwa moja.
-
Washa Pi na subiri ianze.
-
Fungua VS Code, ama moja kwa moja kwenye Pi, au unganisha kupitia kiendelezi cha Remote SSH.
-
Endesha amri zifuatazo kutoka kwa terminal yako:
sudo raspi-config nonint do_legacy 0 sudo reboot
Hii itabadilisha mpangilio kuwezesha programu ya kamera ya urithi, kisha kuanzisha upya Pi ili mpangilio huo uanze kutumika.
-
Subiri Pi ianzishe upya, kisha fungua tena VS Code.
Kazi - programu ya kamera
Panga kifaa.
-
Kutoka kwa terminal, tengeneza folda mpya kwenye saraka ya nyumbani ya mtumiaji
pi
inayoitwafruit-quality-detector
. Tengeneza faili katika folda hii inayoitwaapp.py
. -
Fungua folda hii kwenye VS Code.
-
Ili kuingiliana na kamera, unaweza kutumia maktaba ya Python ya PiCamera. Sakinisha kifurushi cha Pip kwa amri ifuatayo:
pip3 install picamera
-
Ongeza msimbo ufuatao kwenye faili yako ya
app.py
:import io import time from picamera import PiCamera
Msimbo huu huingiza baadhi ya maktaba zinazohitajika, ikiwa ni pamoja na maktaba ya
PiCamera
. -
Ongeza msimbo ufuatao chini ya hii ili kuanzisha kamera:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0 time.sleep(2)
Msimbo huu huunda kitu cha PiCamera, huweka azimio kuwa 640x480. Ingawa azimio la juu zaidi linaungwa mkono (hadi 3280x2464), kielekezi cha picha hufanya kazi kwenye picha ndogo zaidi (227x227) kwa hivyo hakuna haja ya kunasa na kutuma picha kubwa zaidi.
Mstari wa
camera.rotation = 0
huweka mzunguko wa picha. Kebo ya ribbon huingia chini ya kamera, lakini ikiwa kamera yako imezungushwa ili kuruhusu iwe rahisi kuelekea kipengee unachotaka kuainisha, basi unaweza kubadilisha mstari huu kwa idadi ya digrii za mzunguko.Kwa mfano, ikiwa utaweka kebo ya ribbon juu ya kitu ili iwe juu ya kamera, basi weka mzunguko kuwa 180:
camera.rotation = 180
Kamera huchukua sekunde chache kuanza, kwa hivyo mstari wa
time.sleep(2)
. -
Ongeza msimbo ufuatao chini ya hii ili kunasa picha kama data ya binary:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Msimbo huu huunda kitu cha
BytesIO
kuhifadhi data ya binary. Picha inasomwa kutoka kwa kamera kama faili ya JPEG na kuhifadhiwa katika kitu hiki. Kitu hiki kina kiashiria cha nafasi ili kujua kilipo katika data ili data zaidi iweze kuandikwa mwishoni ikiwa inahitajika, kwa hivyo mstari waimage.seek(0)
husogeza nafasi hii kurudi mwanzo ili data yote iweze kusomwa baadaye. -
Chini ya hii, ongeza yafuatayo ili kuhifadhi picha kwenye faili:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Msimbo huu hufungua faili inayoitwa
image.jpg
kwa kuandika, kisha husoma data yote kutoka kwa kitu chaBytesIO
na kuiandika kwenye faili.💁 Unaweza kunasa picha moja kwa moja kwenye faili badala ya kitu cha
BytesIO
kwa kupitisha jina la faili kwenye wito wacamera.capture
. Sababu ya kutumia kitu chaBytesIO
ni ili baadaye katika somo hili uweze kutuma picha kwa kielekezi chako cha picha. -
Elekeza kamera kwenye kitu na endesha msimbo huu.
-
Picha itanaswa na kuhifadhiwa kama
image.jpg
katika folda ya sasa. Utaona faili hii katika kivinjari cha VS Code. Chagua faili ili kuona picha. Ikiwa inahitaji mzunguko, sasisha mstari wacamera.rotation = 0
kama inavyohitajika na piga picha nyingine.
💁 Unaweza kupata msimbo huu katika folda ya code-camera/pi.
😀 Programu yako ya kamera imefanikiwa!
Kanusho:
Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kuhakikisha usahihi, tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.