# التقاط صورة - جهاز إنترنت الأشياء الافتراضي في هذا الجزء من الدرس، ستضيف مستشعر كاميرا إلى جهاز إنترنت الأشياء الافتراضي الخاص بك، وتقوم بقراءة الصور منه. ## الأجهزة سيستخدم جهاز إنترنت الأشياء الافتراضي كاميرا محاكاة ترسل إما صورًا من ملفات أو من كاميرا الويب الخاصة بك. ### إضافة الكاميرا إلى CounterFit لاستخدام كاميرا افتراضية، تحتاج إلى إضافتها إلى تطبيق CounterFit. #### المهمة - إضافة الكاميرا إلى CounterFit أضف الكاميرا إلى تطبيق CounterFit. 1. قم بإنشاء تطبيق Python جديد على جهاز الكمبيوتر الخاص بك في مجلد يسمى `fruit-quality-detector` يحتوي على ملف واحد يسمى `app.py` وبيئة افتراضية لـ Python، وأضف حزم CounterFit باستخدام pip. > ⚠️ يمكنك الرجوع إلى [التعليمات لإنشاء وإعداد مشروع CounterFit Python في الدرس الأول إذا لزم الأمر](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md). 1. قم بتثبيت حزمة إضافية باستخدام pip لتثبيت CounterFit shim الذي يمكنه التفاعل مع مستشعرات الكاميرا عن طريق محاكاة بعض وظائف [حزمة Picamera](https://pypi.org/project/picamera/). تأكد من تثبيتها من خلال نافذة طرفية مع تفعيل البيئة الافتراضية. ```sh pip install counterfit-shims-picamera ``` 1. تأكد من تشغيل تطبيق الويب CounterFit. 1. قم بإنشاء كاميرا: 1. في مربع *إنشاء مستشعر* في لوحة *المستشعرات*، انقر على القائمة المنسدلة *نوع المستشعر* واختر *كاميرا*. 1. قم بتعيين *الاسم* إلى `Picamera`. 1. اختر زر **إضافة** لإنشاء الكاميرا. ![إعدادات الكاميرا](../../../../../translated_images/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.ar.png) سيتم إنشاء الكاميرا وستظهر في قائمة المستشعرات. ![الكاميرا التي تم إنشاؤها](../../../../../translated_images/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.ar.png) ## برمجة الكاميرا يمكن الآن برمجة جهاز إنترنت الأشياء الافتراضي لاستخدام الكاميرا الافتراضية. ### المهمة - برمجة الكاميرا برمج الجهاز. 1. تأكد من فتح تطبيق `fruit-quality-detector` في VS Code. 1. افتح ملف `app.py`. 1. أضف الكود التالي إلى أعلى ملف `app.py` لتوصيل التطبيق بـ CounterFit: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` 1. أضف الكود التالي إلى ملف `app.py` الخاص بك: ```python import io from counterfit_shims_picamera import PiCamera ``` يقوم هذا الكود باستيراد بعض المكتبات اللازمة، بما في ذلك الفئة `PiCamera` من مكتبة counterfit_shims_picamera. 1. أضف الكود التالي أسفل ذلك لتهيئة الكاميرا: ```python camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0 ``` يقوم هذا الكود بإنشاء كائن PiCamera، ويضبط الدقة على 640x480. على الرغم من أن الدقة الأعلى مدعومة، إلا أن مصنف الصور يعمل على صور أصغر بكثير (227x227)، لذلك لا حاجة لالتقاط وإرسال صور أكبر. يقوم السطر `camera.rotation = 0` بتعيين دوران الصورة بالدرجات. إذا كنت بحاجة إلى تدوير الصورة من كاميرا الويب أو الملف، قم بتعيين هذا حسب الحاجة. على سبيل المثال، إذا كنت تريد تغيير صورة موزة على كاميرا ويب في وضع أفقي إلى وضع عمودي، قم بتعيين `camera.rotation = 90`. 1. أضف الكود التالي أسفل ذلك لالتقاط الصورة كبيانات ثنائية: ```python image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0) ``` يقوم هذا الكود بإنشاء كائن `BytesIO` لتخزين البيانات الثنائية. يتم قراءة الصورة من الكاميرا كملف JPEG وتخزينها في هذا الكائن. يحتوي هذا الكائن على مؤشر موقع لمعرفة مكانه في البيانات بحيث يمكن كتابة المزيد من البيانات في النهاية إذا لزم الأمر، لذلك يقوم السطر `image.seek(0)` بإعادة هذا المؤشر إلى البداية حتى يمكن قراءة جميع البيانات لاحقًا. 1. أسفل ذلك، أضف الكود التالي لحفظ الصورة في ملف: ```python with open('image.jpg', 'wb') as image_file: image_file.write(image.read()) ``` يقوم هذا الكود بفتح ملف يسمى `image.jpg` للكتابة، ثم يقرأ جميع البيانات من كائن `BytesIO` ويكتبها إلى الملف. > 💁 يمكنك التقاط الصورة مباشرة إلى ملف بدلاً من كائن `BytesIO` عن طريق تمرير اسم الملف إلى استدعاء `camera.capture`. السبب في استخدام كائن `BytesIO` هو أنه لاحقًا في هذا الدرس يمكنك إرسال الصورة إلى مصنف الصور الخاص بك. 1. قم بتكوين الصورة التي ستلتقطها الكاميرا في CounterFit. يمكنك إما تعيين *المصدر* إلى *ملف*، ثم تحميل ملف صورة، أو تعيين *المصدر* إلى *كاميرا ويب*، وسيتم التقاط الصور من كاميرا الويب الخاصة بك. تأكد من اختيار زر **تعيين** بعد اختيار صورة أو تحديد كاميرا الويب. ![CounterFit مع ملف تم تعيينه كمصدر للصورة، وكاميرا ويب تعرض شخصًا يحمل موزة في معاينة الكاميرا](../../../../../translated_images/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.ar.png) 1. سيتم التقاط صورة وحفظها كـ `image.jpg` في المجلد الحالي. سترى هذا الملف في مستكشف VS Code. اختر الملف لعرض الصورة. إذا كانت بحاجة إلى تدوير، قم بتحديث السطر `camera.rotation = 0` حسب الضرورة والتقط صورة أخرى. > 💁 يمكنك العثور على هذا الكود في المجلد [code-camera/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-camera/virtual-iot-device). 😀 لقد نجحت في برمجة الكاميرا! --- **إخلاء المسؤولية**: تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.