1. البدء السريع¶
مرحباً -- يسعدنا أن نُعرّفك على OpenMV Cam، وهي كاميرا صغيرة قابلة للبرمجة تُشغّل Python مباشرةً على الجهاز. اكتب بضعة أسطر من الشيفرة، واضغط على تشغيل، وتبدأ الكاميرا بالرؤية: كشف الوجوه، وتتبع الألوان، وقراءة الوسوم، وتتبع الخطوط -- دون حاسوب في الحلقة ودون إعداد ثقيل تخوضه أولاً.
سيجعلك دليل البدء السريع هذا جاهزاً للعمل في غضون دقائق قليلة: ستُثبّت IDE، وتوصّل كاميرتك، وتُشغّل كاشف وجوه حياً كأول برنامج نصي لك على الإطلاق.
1.1. ثبّت OpenMV IDE¶
OpenMV IDE هو تطبيق سطح المكتب لكتابة البرامج النصية وتشغيلها على الكاميرا ومشاهدة النتائج حياً. نزّله لنظام Windows أو macOS أو Linux من هنا، ثم ثبّته:
Windows -- شغّل المُثبِّت. يُثبّت IDE إلى جانب مشغّلات USB الخاصة بالكاميرا؛ اتبع المطالبات الافتراضية.
macOS -- افتح ملف
.dmgواسحب OpenMV IDE إلى مجلد التطبيقات.Linux -- شغّل
chmod +x openmv-ide-*.run && ./openmv-ide-*.run، ثم اتبع مطالبات المُثبِّت.
ملاحظة
للإعدادات الآلية أو من دون واجهة، تعمل المُثبِّتات أيضاً من سطر الأوامر مع رايات التثبيت الصامت. راجع openmv-ide README للحصول على الأوامر الدقيقة لكل منصة.
1.2. وصّل كاميرتك¶
صِل الكاميرا بحاسوبك عبر كابل بيانات USB. انتظر حتى يُحمَّل قرصها ويبدأ مؤشر LED الأزرق بالوميض، ثم انقر على زر الاتصال -- أيقونة القابس في أسفل شريط الأدوات.
في المرة الأولى التي تتصل فيها، يقارن IDE البرنامج الثابت للكاميرا بالإصدار الذي يأتي معه ويعرض تحديثه. اقبل المطالبة لكتابة أحدث برنامج ثابت؛ يستغرق ذلك بضع ثوانٍ، ويُعيد IDE الاتصال من تلقاء نفسه عند انتهائه.
إذا لم تظهر الكاميرا، أو أردت تفاصيل ما يفعله الاتصال والتحديث، فراجع توصيل كاميرا و تحديثات البرنامج الثابت والاسترداد.
ملاحظة
علقت في شيء ما؟ انشر على منتديات OpenMV -- يسعد المجتمع وفريق OpenMV بمساعدتك.
1.3. شغّل أول برنامج نصي لك¶
تأتي OpenMV Cam الخاصة بك مع كاشف وجوه BlazeFace من MediaPipe من Google على ذاكرة الفلاش. الصق هذا البرنامج النصي في المحرر:
import csi
import time
import ml
from ml.postprocessing.mediapipe import BlazeFace
# Set up the camera sensor.
csi0 = csi.CSI()
csi0.reset() # Initialize the sensor to a known state.
csi0.pixformat(csi.RGB565) # Capture 16-bit colour.
csi0.framesize(csi.QVGA) # Set a small, fast frame size.
# BlazeFace was trained on square images, so crop to a centred
# square the size of the sensor's height.
side = csi0.height()
csi0.window((side, side))
# Load the built-in face detector. The post-processor turns the
# network's raw output into a list of detections; threshold sets how
# confident a detection must be to count.
model = ml.Model("/rom/blazeface_front_128.tflite",
postprocess=BlazeFace(threshold=0.4))
clock = time.clock() # For measuring the frame rate.
while True:
clock.tick()
img = csi0.snapshot() # Capture one frame.
# predict() runs the network and returns one
# ((x, y, w, h), score, keypoints) tuple per detected face.
for rect, score, keypoints in model.predict([img]):
# Draw the box around the face...
ml.utils.draw_predictions(img, [rect], ("face",),
((0, 0, 255),), format=None)
# ...and mark the six landmarks: eyes, nose, mouth, ears.
ml.utils.draw_keypoints(img, keypoints, color=(255, 0, 0))
print(clock.fps(), "fps")
اضغط على زر Run الأخضر ووجّه الكاميرا نحو وجه. يرسم عارض مخزن الإطارات مربعاً حول كل وجه ويُعلّم العينين والأنف والفم والأذنين، بينما تطبع الطرفية التسلسلية معدل الإطارات.
هذا البرنامج النصي -- وواحد لكل ميزة تقريباً تمتلكها الكاميرا -- مدمج أيضاً في IDE ضمن File → Examples، مُرشَّحاً وفقاً للوحتك المتصلة. افتح واحداً، واضغط على تشغيل، وابدأ باستكشاف ما يمكن للكاميرا فعله.
1.4. إلى أين تذهب بعد ذلك¶
يعتمد المكان الذي تقفز إليه على ما تعرفه مسبقاً. للدرس التعليمي ثلاث نقاط انطلاق -- جديد على Python، أو جديد على العتاد، أو مستعد للرؤية الآلية -- فاختر التي تناسبك. المراجع ودليل IDE موجودان متى احتجت إليهما.