📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
نوع: محتوى تعليمي
لنستعرض التغييرات التي ستجريها لإضافة وظائف رؤية الحاسب للطائرة المسيرة.
إضافة المؤقت
نوع: محتوى تعليمي
إضافة المؤقت
Adding a Timer
نوع: محتوى تعليمي
يمكن أن يكون التقاط صورة ومعالجتها مكلفًا من الناحية الحاسوبية إذا حُسب لكل إطار من إطارات المحاكاة. ولذلك سنضيف مؤقتًا زمنياً لاستخدامه؛ لتنفيذ هذه الإجراءات كل خمس ثوانٍ فقط.
نوع: محتوى تعليمي
# time intervals used for adjustments in order to reach the target altitude
t1 = self.getTime()
# time intervals between each detection for human figures
t2 = self.getTime()
إنشاء مجلد
نوع: محتوى تعليمي
إنشاء مجلد
Creating a Folder
نوع: محتوى تعليمي
سيتم حفظ الصور الملتقطة التي يتم فيها اكتشاف الشخوص البشرية في مجلد، حيث يُعد جزءًا من أرشيف المراقبة الأمنية الذي سيساعد على فحص الصور في المستقبل.
نوع: محتوى تعليمي
أولاً: عليك أن تستخدم الدالة ()getcwd لتسترد مسار دليل العمل الحالي لبرنامج المتحكم (وهو المجلد الذي يتضمن برنامج المتحكم) حتى يتعرف البرنامج على المكان الذي يضع فيه المجلد الجديد باسم: (تم الاكتشاف). بحيث تستخدم الدالة ()path.join لربط اسم المسار بسلسلة اسم المجلد النصية. وتتمثل الخطوة الأخيرة في التحقق مما إذا كان المجلد موجودًا بالفعل أم لا، وفي تلك الحالة يتم إنشاء مجلد جديد.
نوع: محتوى تعليمي
# gets the current working directory
cwd = os.getcwd()
# sets the name of the folder where the images
# with detected humans will be stored
folder_name = "detected"
# joins the current working directory and the new folder name
folder_path = os.path.join(cwd, folder_name)
if not os.path.exists(folder_path):
# creates the folder if it doesn't exist already
os.makedirs(folder_path)
print(f"Folder \"\detected\" created!")
else:
print(f"Folder \"\detected\" already exists!")
معالجة الصورة
نوع: محتوى تعليمي
معالجة الصورة
Image Processing
نوع: محتوى تعليمي
في هذا التوقيت يمكنك الآن استرداد (قراءة) الصورة من الجهاز لمعالجتها قبل محاولة الكشف. لاحظ أن كل ما يتعلق بمعالجة الصورة وصولاً إلى حفظها يحدث كل خمس ثوانٍ فقط، كما هو مبين في الشرط self.getTime() - t2 > 5.0.
نوع: محتوى تعليمي
# initiates the image processing and detection routine every 5 seconds
if self.getTime() - t2 > 5.0:
# retrieves image array from camera
cameraImg = self.camera.getImageArray()
نوع: METADATA
وزارة التعليم
نوع: METADATA
329
نوع: METADATA
2025 - 1447
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 5 بطاقة لهذه الصفحة
لماذا يُضاف مؤقت زمني عند التقاط الصور ومعالجتها في نظام الطائرة المسيرة؟
الإجابة: يُضاف المؤقت الزمني لتجنب التكلفة الحاسوبية العالية التي قد تنتج عن معالجة كل إطار من إطارات المحاكاة. بدلاً من ذلك، يتم تنفيذ الإجراءات كل خمس ثوانٍ فقط.
الشرح: التقاط ومعالجة الصور لكل إطار في المحاكاة يستهلك الكثير من موارد المعالجة. المؤقت يقلل هذا العبء عن طريق تحديد فترات زمنية منتظمة لتنفيذ هذه المهام، مما يجعل النظام أكثر كفاءة.
تلميح: ما هي المشكلة التي يحاول المؤقت حلها عند التعامل مع كل صورة؟
ما هي وظيفة مجلد "detected" في نظام الطائرة المسيرة؟
الإجابة: يُستخدم مجلد "detected" لحفظ الصور التي يتم فيها اكتشاف الشخوص البشرية. يعتبر هذا المجلد جزءًا من أرشيف المراقبة الأمنية الذي يساعد في فحص الصور لاحقًا.
الشرح: الحاجة إلى الاحتفاظ بسجل للصور التي تم فيها اكتشاف أفراد هي جزء أساسي من مهام المراقبة الأمنية. إنشاء مجلد مخصص لهذه الصور يسهل تنظيمها والوصول إليها عند الحاجة.
تلميح: فكر في الغرض من حفظ الصور التي تظهر فيها أشخاص.
اشرح الخطوات الأساسية لإنشاء مجلد لحفظ الصور المكتشفة باستخدام بايثون.
الإجابة: تتضمن الخطوات استخدام الدالة `os.getcwd()` لاسترداد دليل العمل الحالي، ثم استخدام `os.path.join()` لربط المسار الحالي مع اسم المجلد الجديد ("detected"). أخيراً، يتم التحقق من وجود المجلد باستخدام `os.path.exists()`، وفي حال عدم وجوده، يتم إنشاؤه باستخدام `os.makedirs()`.
الشرح: الوحدة `os` في بايثون توفر وظائف للتعامل مع نظام التشغيل، بما في ذلك إدارة الملفات والمجلدات. `getcwd` لجلب المسار الحالي، `path.join` لإنشاء مسار صحيح، و`path.exists` و`makedirs` لإنشاء المجلد.
تلميح: ما هي الوحدات البرمجية في بايثون التي تتعامل مع نظام الملفات؟
ما هو الشرط المستخدم لتنفيذ معالجة الصورة والكشف عن الشخوص كل خمس ثوانٍ؟
الإجابة: الشرط المستخدم هو `self.getTime() - t2 > 5.0`، حيث `t2` يمثل الوقت السابق الذي تم فيه الكشف، و`self.getTime()` يمثل الوقت الحالي. هذا الشرط يتحقق مما إذا كان قد مر أكثر من خمس ثوانٍ منذ آخر عملية كشف.
الشرح: يتم استخدام متغير داخلي (`t2`) لتخزين الوقت الذي تمت فيه آخر عملية معالجة. بمقارنة الوقت الحالي (`self.getTime()`) مع هذا المتغير، يمكن تحديد ما إذا كان الفاصل الزمني المحدد (5 ثوانٍ) قد انقضى، مما يستدعي بدء عملية معالجة جديدة.
تلميح: فكر في كيفية حساب الفرق الزمني بين حدثين متتابعين.
ما هي الخطوة الأولى التي تتم بعد التأكد من انقضاء المدة الزمنية المطلوبة لمعالجة الصورة؟
الإجابة: الخطوة الأولى هي استرداد مصفوفة الصورة من الكاميرا باستخدام الدالة `self.camera.getImageArray()`.
الشرح: بعد التأكد من أن الوقت مناسب لإجراء عملية الكشف (وفقاً للمؤقت)، فإن أول إجراء فعلي هو الحصول على بيانات الصورة الخام من مصدرها (الكاميرا) لتتمكن الخوارزميات اللاحقة من معالجتها.
تلميح: قبل معالجة الصورة، ماذا تحتاج أن تفعل أولاً؟