6.4 KiB
Tangkap Gambar - Perkakasan IoT Maya
Dalam bahagian pelajaran ini, anda akan menambah sensor kamera pada peranti IoT maya anda, dan membaca gambar daripadanya.
Perkakasan
Peranti IoT maya akan menggunakan kamera simulasi yang menghantar sama ada gambar daripada fail atau daripada kamera web anda.
Tambah kamera ke CounterFit
Untuk menggunakan kamera maya, anda perlu menambah satu ke aplikasi CounterFit.
Tugasan - tambah kamera ke CounterFit
Tambah kamera ke aplikasi CounterFit.
-
Cipta aplikasi Python baharu pada komputer anda dalam folder bernama
fruit-quality-detector
dengan satu fail bernamaapp.py
dan persekitaran maya Python, serta tambahkan pakej pip CounterFit.⚠️ Anda boleh merujuk kepada arahan untuk mencipta dan menyediakan projek Python CounterFit dalam pelajaran 1 jika diperlukan.
-
Pasang pakej Pip tambahan untuk memasang shim CounterFit yang boleh berkomunikasi dengan sensor Kamera dengan mensimulasikan beberapa fungsi daripada Pakej Pip Picamera. Pastikan anda memasangnya dari terminal dengan persekitaran maya diaktifkan.
pip install counterfit-shims-picamera
-
Pastikan aplikasi web CounterFit sedang berjalan.
-
Cipta kamera:
-
Dalam kotak Create sensor di panel Sensors, klik pada kotak Sensor type dan pilih Camera.
-
Tetapkan Name kepada
Picamera
. -
Pilih butang Add untuk mencipta kamera.
Kamera akan dicipta dan muncul dalam senarai sensor.
-
Programkan kamera
Peranti IoT maya kini boleh diprogramkan untuk menggunakan kamera maya.
Tugasan - programkan kamera
Programkan peranti.
-
Pastikan aplikasi
fruit-quality-detector
dibuka dalam VS Code. -
Buka fail
app.py
. -
Tambahkan kod berikut di bahagian atas
app.py
untuk menyambungkan aplikasi ke CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Tambahkan kod berikut ke fail
app.py
anda:import io from counterfit_shims_picamera import PiCamera
Kod ini mengimport beberapa perpustakaan yang diperlukan, termasuk kelas
PiCamera
daripada perpustakaan counterfit_shims_picamera. -
Tambahkan kod berikut di bawah ini untuk memulakan kamera:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0
Kod ini mencipta objek PiCamera, menetapkan resolusi kepada 640x480. Walaupun resolusi yang lebih tinggi disokong, pengklasifikasi imej berfungsi pada imej yang jauh lebih kecil (227x227), jadi tidak perlu menangkap dan menghantar imej yang lebih besar.
Baris
camera.rotation = 0
menetapkan putaran imej dalam darjah. Jika anda perlu memutar imej daripada kamera web atau fail, tetapkan nilai ini mengikut keperluan. Sebagai contoh, jika anda ingin menukar imej pisang pada kamera web dalam mod landskap kepada mod potret, tetapkancamera.rotation = 90
. -
Tambahkan kod berikut di bawah ini untuk menangkap imej sebagai data binari:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Kod ini mencipta objek
BytesIO
untuk menyimpan data binari. Imej dibaca daripada kamera sebagai fail JPEG dan disimpan dalam objek ini. Objek ini mempunyai penunjuk kedudukan untuk mengetahui di mana ia berada dalam data supaya lebih banyak data boleh ditulis di hujung jika diperlukan, jadi barisimage.seek(0)
menggerakkan kedudukan ini kembali ke permulaan supaya semua data boleh dibaca kemudian. -
Di bawah ini, tambahkan kod berikut untuk menyimpan imej ke fail:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Kod ini membuka fail bernama
image.jpg
untuk penulisan, kemudian membaca semua data daripada objekBytesIO
dan menulisnya ke fail.💁 Anda boleh menangkap imej terus ke fail dan bukannya objek
BytesIO
dengan memberikan nama fail kepada panggilancamera.capture
. Sebab menggunakan objekBytesIO
adalah supaya nanti dalam pelajaran ini anda boleh menghantar imej ke pengklasifikasi imej anda. -
Konfigurasikan imej yang akan ditangkap oleh kamera dalam CounterFit. Anda boleh menetapkan Source kepada File, kemudian muat naik fail imej, atau menetapkan Source kepada WebCam, dan imej akan ditangkap daripada kamera web anda. Pastikan anda memilih butang Set selepas memilih gambar atau kamera web anda.
-
Imej akan ditangkap dan disimpan sebagai
image.jpg
dalam folder semasa. Anda akan melihat fail ini dalam penjelajah VS Code. Pilih fail untuk melihat imej. Jika ia memerlukan putaran, kemas kini bariscamera.rotation = 0
mengikut keperluan dan ambil gambar lain.
💁 Anda boleh menemui kod ini dalam folder code-camera/virtual-iot-device.
😀 Program kamera anda berjaya!
Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.