14 KiB
ទាញយករូបភាព - Raspberry Pi
ក្នុងផ្នែកនេះនៃមេរៀន អ្នកនឹងបន្ថែមឧបករណ៍អេឌ្ស៊ីចរូបភាពទៅ Raspberry Pi របស់អ្នក ហើយអានរូបភាពពីវា។
វិធីសាស្រ្ត
Raspberry Pi ត្រូវការកាមេរ៉ា។
កាមេរ៉ាដែលអ្នកនឹងប្រើគឺជា Raspberry Pi Camera Module។ កាមេរ៉ានេះត្រូវបានរចនាឡើងសម្រាប់ប្រើជាមួយ Raspberry Pi ហើយភ្ជាប់តាមខ្សែភ្ជាប់ឯកជននៅលើ Pi។
💁 កាមេរ៉ានេះប្រើប្រាស់ Camera Serial Interface, ពិធីការដោយ Mobile Industry Processor Interface Alliance ឬ MIPI-CSI។ នេះជាពិធីការឯកទេសសម្រាប់បញ្ជូនរូបភាព។
ភ្ជាប់កាមេរ៉ា
កាមេរ៉ាអាចភ្ជាប់ទៅ Raspberry Pi តាមខ្សែរបិទរបស់វា។
ភារកិច្ច - ភ្ជាប់កាមេរ៉ា
-
បិទភ្លើង Pi។
-
ភ្ជាប់ខ្សែរបិទដែលបានផ្តល់ជាមួយកាមេរ៉ាទៅកាមេរ៉ា។ ដើម្បីធ្វើនេះ ដកចេញបន្ទាប់ពីចលករជាប្រុញដៃខ្មៅក្នុងកន្លែងតាមប្រអប់បន្តិចហើយបញ្ចូលខ្សែចូលក្នុងសន្លឹកដោយផ្នែកខៀវនៃខ្សែផ្ទុយពីកញ្ចក់ និងបន្ទះនៃដណ្តឹងដែកនៅជិតកញ្ចក់។ បន្ទាប់ពីបញ្ចូលយ៉ាងពេញលេញ បិទប្រុញដៃខ្មៅត្រលប់ទៅកន្លែងដដែល។
អ្នកអាចមើលមានឱកាសអាននូវរបៀបបើកប្រុញដៃ និងបញ្ចូលខ្សែពី ឯកសារចាប់ផ្តើមកាមេរ៉ា Raspberry Pi។
-
ដក Grove Base Hat ចេញពី Pi។
-
ដកខ្សែរបិទឲ្យឆ្លងតាមរន្ធកាមេរ៉ានៅលើ Grove Base Hat។ ពិនិត្យាឲ្យប្រាកដផ្នែកខៀវនៃខ្សែផ្ទុយពីច្រវ៉ាក់អាណាឡុកណូដែលមានស្លាក A0, A1 ល។
-
បញ្ចូលខ្សែរបិទទៅក្នុងរន្ធកាមេរ៉ានៅលើ Pi។ ដូចមុន សូមលើកប្រុញដៃខ្មៅ, បញ្ចូលខ្សែ, រួចបិទប្រុញដៃវិញ។ ផ្នែកខៀវនៃខ្សែគួរតែបង្ហាញទៅកាន់រន្ធ USB និង ethernet។
-
ដំឡើងវិញ Grove Base Hat
បង្ហាញកម្មវិធីកាមេរ៉ា
Raspberry Pi ឥឡូវនេះអាចត្រូវបានកម្មវិធីដើម្បីប្រើកាមេរ៉ា ដោយប្រើបណ្ណាល័យ Python PiCamera។
ភារកិច្ច - បើកប្រើម៉ូដកាមេរ៉ា legacy
សោកស្តាយ ជាមួយការចេញផ្សាយ Raspberry Pi OS Bullseye កម្មវិធីកាមេរ៉ាដែលមាននៅក្នុង OS បានផ្លាស់ប្ដូរ ហើយដូច្នេះ PiCamera មិនដំណើរការតាមលំនាំដើមទៀត។ មានកម្មវិធីជំនួស PiCamera2 កំពុងត្រូវអភិវឌ្ឍ ប៉ុន្តែវាមិនទាន់អាចប្រើបាននៅឡើយ។
ពេលនេះ អ្នកអាចកំណត់ Pi របស់អ្នកក្នុងម៉ូដកាមេរ៉ា legacy ដើម្បីឲ្យ PiCamera អាចដំណើរការ។ រន្ធកាមេរ៉ាក៏ត្រូវបានបិទដើមផងដែរ ប៉ុន្តែការបើកកម្មវិធីកាមេរ៉ា legacy នឹងបើករន្ធនេះដោយស្វ័យប្រវត្តិ។
-
បើក Pi ហើយរង់ចាំវាចាប់ផ្តើម
-
បើក VS Code ទាំងនៅលើ Pi ផ្ទាល់ ឬតាមរយៈបន្លាស់ Remote SSH។
-
រត់ពាក្យបញ្ជាខាងក្រោមពី terminal របស់អ្នក៖
sudo raspi-config nonint do_legacy 0 sudo rebootនេះនឹងបន្ថែមការកំណត់សម្រាប់បើកកម្មវិធីកាមេរ៉ា legacy រួចផ្ទុកឡើងវិញ Pi ដើម្បីអោយការកំណត់នេះមានប្រសិទ្ធភាព។
-
រង់ចាំ Pi បញ្ចេញដោយឡើងវិញ បន្ទាប់មកបើក VS Code ម្ដងទៀត។
ភារកិច្ច - កម្មវិធីកាមេរ៉ា
បង្ហាញកម្មវិធីឧបករណ៍។
-
ពី terminal បង្កើតថតថ្មីក្នុងថតផ្ទះអ្នកប្រើ
piមានឈ្មោះfruit-quality-detector។ បង្កើតឯកសារapp.pyនៅក្នុងថតនេះ។ -
បើកថតនេះក្នុង VS Code
-
ដើម្បីធ្វើការជាមួយកាមេរ៉ា អ្នកអាចប្រើបណ្ណាល័យ PiCamera Python។ ដំឡើង pip ផ្នែកនេះជាមួយពាក្យបញ្ជាខាងក្រោម៖
pip3 install picamera -
បន្ថែមកូដខាងក្រោមទៅឯកសារ
app.pyរបស់អ្នក៖import io import time from picamera import PiCameraកូដនេះនាំចូលបណ្ណាល័យជាច្រើន ដែលមានបណ្ណាល័យ
PiCameraនៅក្នុង។ -
បន្ថែមកូដខាងក្រោមនេះសម្រាប់រៀបចំកាមេរ៉ា៖
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0 time.sleep(2)កូដនេះបង្កើតវត្ថុ PiCamera កំណត់ការដោះស្រាយទៅ 640x480។ បើទោះបីជាការដោះស្រាយខ្ពស់ជាងនេះមានស្រាប់ (ដល់ 3280x2464) កម្មវិធីចាត់ចែងរូបភាពប្រើលើរូបភាពតូចជាងនេះ (227x227) ដូច្នេះគ្មានករណីត្រូវទាញយករូបភាពធំឡើងទេ។
បន្ទាត់
camera.rotation = 0កំណត់លំហូររូបភាព។ ខ្សែរបិទចូលពីផ្នែកខាងក្រោមនៃកាមេរ៉ា ប៉ុន្តែប្រសិនបើកាមេរ៉ារបស់អ្នកបានបង្វិលដើម្បីឲ្យវាស្រាតមកលើគ្រឿងដែលអ្នកចង់ចាត់ថ្នាក់ ត្រូវផ្លាស់ប្ដូរបន្ទាត់នេះទៅជាចំនួនកម្រិត។ឧទាហរណ៍ ប្រសិនបើអ្នកផ្គាប់ខ្សែរបិទនៅលើអ្វីមួយ ដែលមានកំរិតនៅខាងលើនៃកាមេរ៉ា កំណត់ការបង្វិលទៅ 180៖
camera.rotation = 180កាមេរ៉ាចាំបាច់មានពេលខ្ពស់បន្តិចសម្រាប់ចាប់ផ្តើម ដូច្នេះមានបន្ទាត់
time.sleep(2) -
បន្ថែមកូដខាងក្រោមនេះសម្រាប់ទាញយករូបភាពជាទិន្នន័យប៊ីណារី៖
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)កូដនេះបង្កើតវត្ថុ
BytesIOសម្រាប់រក្សាទិន្នន័យប៊ីណារី។ រូបភាពត្រូវបានអានពីកាមេរ៉ា ជាឯកសារ JPEG ហើយរក្សាទុកក្នុងវត្ថុនេះ។ វត្ថុនេះមានតំណាងទីតាំងដើម្បីដឹងថាវាស្ថិតនៅទីណាក្នុងទិន្នន័យ ដើម្បីអាចសរសេរទិន្នន័យបន្ថែមនៅចុងបន្ទាប់បាន ដូច្នេះ បន្ទាត់image.seek(0)នាំប្រជុំទីតាំងក្រោយវិលត្រឡប់ទៅដំបូង ដើម្បីអានទិន្នន័យទាំងអស់ក្រោយ។ -
ខាងក្រោមនេះ បន្ថែមកូដនេះសម្រាប់រក្សាទុករូបភាពទៅឯកសារ៖
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())កូដនេះបើកឯកសារហៅថា
image.jpgសម្រាប់សរសេរ បន្ទាប់មកអានទិន្នន័យទាំងអស់ពីវត្ថុBytesIOហើយសរសេរលើឯកសារ។💁 អ្នកអាចទាញយករូបភាពទៅឯកសារតែប៉ុណ្ណោះ ដោយផ្ទាល់ជំនួសរក្សាទុកក្នុងវត្ថុ
BytesIOដោយបញ្ជូនឈ្មោះឯកសារទៅការហៅcamera.capture។ មូលហេតុនៃការប្រើវត្ថុBytesIOគឺ ដើម្បីអោយអ្នកអាចផ្ញើរូបភាពទៅកម្មវិធីចាត់ថ្នាក់រូបភាពក្នុងមេរៀនក្រោយ។ -
បង្ហាញកាមេរ៉ាទៅខ្លះ ហើយរត់កូដនេះ។
-
រូបភាពមួយនឹងត្រូវទាញយក និងរក្សាទុកជា
image.jpgនៅក្នុងថតបច្ចុប្បន្ន។ អ្នកនឹងឃើញឯកសារនេះក្នុងកាន់ត្រាវ VS Code។ ជ្រើសឯកសារដើម្បីមើលរូបភាព។ បើវាត្រូវការបង្វិល បន្ត្យប្តូរបន្ទាត់camera.rotation = 0ដូចត្រូវការ ហើយថតរូបមួយទៀត។
💁 អ្នកអាចស្វែងរកកូដនេះនៅក្នុងថត code-camera/pi។
😀 កម្មវិធីកាមេរ៉ារបស់អ្នកបានជោគជ័យ!
បញ្ជាក់៖
ឯកសារនេះត្រូវបានបម្លែងដោយប្រើសេវាកម្មបកប្រែ AI Co-op Translator។ ខណៈពេលដែលយើងខិតខំក្នុងការធានាការត្រឹមត្រូវ សូមចំណាំថាការបកប្រែដោយស្វ័យប្រវត្តិកំពុងមានកំហុស ឬភាពមិនត្រឹមត្រូវខ្លះៗ។ ឯកសារដើមជាភាសាមូលដ្ឋានគួរត្រូវបានគិតថាជា ប្រភពផ្លូវការបំផុត។ សម្រាប់ព័ត៌មានសំខាន់ៗ យើងខ្ញុំសូមផ្ដល់អនុសាសន៍ឲ្យប្រើប្រាស់ការបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ខុស ឬការបកប្រែខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។




