8.7 KiB
گرفتن تصویر - سختافزار مجازی IoT
در این بخش از درس، شما یک حسگر دوربین به دستگاه IoT مجازی خود اضافه میکنید و تصاویر را از آن میخوانید.
سختافزار
دستگاه IoT مجازی از یک دوربین شبیهسازیشده استفاده میکند که یا تصاویر را از فایلها ارسال میکند یا از وبکم شما.
افزودن دوربین به CounterFit
برای استفاده از یک دوربین مجازی، باید یکی را به برنامه CounterFit اضافه کنید.
وظیفه - افزودن دوربین به CounterFit
دوربین را به برنامه CounterFit اضافه کنید.
-
یک برنامه پایتون جدید در رایانه خود در پوشهای به نام
fruit-quality-detectorبا یک فایل به نامapp.pyو یک محیط مجازی پایتون ایجاد کنید و بستههای pip مربوط به CounterFit را اضافه کنید.⚠️ میتوانید به دستورالعملهای ایجاد و تنظیم یک پروژه پایتون CounterFit در درس 1 در صورت نیاز مراجعه کنید.
-
یک بسته pip اضافی نصب کنید تا یک شیم CounterFit نصب شود که بتواند با شبیهسازی برخی از بسته pip مربوط به Picamera با حسگرهای دوربین ارتباط برقرار کند. مطمئن شوید که این کار را از یک ترمینال با محیط مجازی فعال انجام میدهید.
pip install counterfit-shims-picamera -
مطمئن شوید که برنامه وب CounterFit در حال اجرا است.
-
یک دوربین ایجاد کنید:
-
در کادر Create sensor در پنل Sensors، از منوی کشویی Sensor type گزینه Camera را انتخاب کنید.
-
مقدار Name را به
Picameraتنظیم کنید. -
دکمه Add را برای ایجاد دوربین انتخاب کنید.
دوربین ایجاد شده و در لیست حسگرها ظاهر میشود.
-
برنامهنویسی دوربین
اکنون میتوانید دستگاه IoT مجازی را برای استفاده از دوربین مجازی برنامهنویسی کنید.
وظیفه - برنامهنویسی دوربین
دستگاه را برنامهنویسی کنید.
-
مطمئن شوید که برنامه
fruit-quality-detectorدر VS Code باز است. -
فایل
app.pyرا باز کنید. -
کد زیر را به بالای فایل
app.pyاضافه کنید تا برنامه به CounterFit متصل شود:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) -
کد زیر را به فایل
app.pyخود اضافه کنید:import io from counterfit_shims_picamera import PiCameraاین کد برخی از کتابخانههای موردنیاز، از جمله کلاس
PiCameraاز کتابخانه counterfit_shims_picamera را وارد میکند. -
کد زیر را در ادامه اضافه کنید تا دوربین را مقداردهی اولیه کنید:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0این کد یک شیء PiCamera ایجاد میکند و وضوح تصویر را به 640x480 تنظیم میکند. اگرچه وضوحهای بالاتر پشتیبانی میشوند، اما طبقهبندیکننده تصویر روی تصاویر بسیار کوچکتر (227x227) کار میکند، بنابراین نیازی به گرفتن و ارسال تصاویر بزرگتر نیست.
خط
camera.rotation = 0چرخش تصویر را بر حسب درجه تنظیم میکند. اگر نیاز به چرخاندن تصویر از وبکم یا فایل دارید، این مقدار را بهطور مناسب تنظیم کنید. برای مثال، اگر میخواهید تصویر یک موز در حالت افقی وبکم را به حالت عمودی تغییر دهید، مقدارcamera.rotation = 90را تنظیم کنید. -
کد زیر را اضافه کنید تا تصویر را بهصورت دادههای باینری ذخیره کنید:
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این است که در ادامه این درس میتوانید تصویر را به طبقهبندیکننده تصویر خود ارسال کنید. -
تصویری که دوربین در CounterFit میگیرد را پیکربندی کنید. میتوانید Source را به File تنظیم کنید، سپس یک فایل تصویر آپلود کنید، یا Source را به WebCam تنظیم کنید و تصاویر از وبکم شما گرفته شوند. مطمئن شوید که پس از انتخاب تصویر یا وبکم، دکمه Set را انتخاب کنید.
-
یک تصویر گرفته شده و بهعنوان
image.jpgدر پوشه فعلی ذخیره میشود. این فایل را در کاوشگر VS Code خواهید دید. فایل را انتخاب کنید تا تصویر را مشاهده کنید. اگر نیاز به چرخش دارد، خطcamera.rotation = 0را بهطور مناسب بهروزرسانی کنید و دوباره عکس بگیرید.
💁 میتوانید این کد را در پوشه code-camera/virtual-iot-device پیدا کنید.
😀 برنامه دوربین شما با موفقیت انجام شد!
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.


