رؤية الآلة،
ببساطة.
كشف الوجوه المباشر، وتتبع AprilTag، ومسح QR، و YOLO. كل ذلك على الجهاز بـ MicroPython الخالص. دون حاسوب مضيف أو سحابة.
مرحبا بالعالم
أمثلةimport csi
import time
import ml
from ml.postprocessing.ultralytics import YoloV8
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
csi0.snapshot(time=2000) # let AWB/AGC stabilize
# Built-in single-class person detector model.
model = ml.Model("/rom/yolov8n_192.tflite",
postprocess=YoloV8(threshold=0.4))
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
# predict returns a list per class of ((x, y, w, h), score) tuples.
for class_dets in model.predict([img]):
for rect, score in class_dets:
img.draw_rectangle(rect, color=(0, 255, 0))
print(clock.fps(), "fps")
تتبع الأشخاص في الوقت الفعلي
نموذج YOLOv8 المدمج هو كاشف للأشخاص أحادي الفئة — مُكمَّم بـ int8 ومحمول في ROM.
/rom/yolov8n_192.tflite — دون الحاجة إلى بطاقة SD أو تنزيل.import csi
import math
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # let AWB/AGC stabilize
csi0.auto_gain(False)
csi0.auto_whitebal(False)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
for tag in img.find_apriltags():
img.draw_detection(tag, color1=(255, 0, 0), color2=(0, 255, 0))
deg = math.degrees(tag.rotation)
print("ID %d rotation %.1f deg" % (tag.id, deg))
print(clock.fps(), "fps")
تحديد AprilTags والتعرف عليها
AprilTags هي علامات مرجعية ثنائية الأبعاد — متينة أمام الضبابية الحركية والحجب الجزئي، وتوفر وضعية كاملة ثلاثية الأبعاد.
x/y/z ودوران x/y/z.import csi
import time
import ml
from ml.postprocessing.mediapipe import BlazeFace
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
csi0.window((400, 400)) # square window for best results
csi0.snapshot(time=2000) # let AWB/AGC stabilize
model = ml.Model("/rom/blazeface_front_128.tflite",
postprocess=BlazeFace(threshold=0.4))
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
for rect, score, keypoints in model.predict([img]):
img.draw_rectangle(rect, color=(0, 0, 255))
ml.utils.draw_keypoints(img, keypoints, color=(255, 0, 0))
print(clock.fps(), "fps")
كشف الوجوه بـ BlazeFace
BlazeFace من Google هو كاشف وجوه خفيف الوزن بـ TensorFlow Lite يُرجع صناديق الإحاطة وست نقاط مرجعية لكل وجه.
/rom/blazeface_front_128.tflite — مُكمَّم مسبقًا، لا تنزيل مطلوب.import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # let AWB/AGC stabilize
csi0.auto_gain(False)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
for code in img.find_qrcodes():
img.draw_rectangle(code.rect, color=(255, 0, 0))
print(code.payload)
print(clock.fps(), "fps")
مسح رموز QR من بث مباشر
محلل QR المدمج يتعامل مع الرموز المائلة والمشوهة والمحجوبة جزئيًا.
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # let AWB/AGC stabilize
csi0.auto_gain(False)
csi0.auto_whitebal(False)
# LAB thresholds: (L_min, L_max, A_min, A_max, B_min, B_max)
thresholds = [
(30, 100, 15, 127, 15, 127), # red
(30, 100, -64, -8, -32, 32), # green
]
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
for blob in img.find_blobs(thresholds, pixels_threshold=200):
img.draw_rectangle(blob.rect, color=(255, 0, 0))
img.draw_cross((blob.cx, blob.cy))
print(clock.fps(), "fps")
البحث عن كتل اللون
find_blobs تُرجع مناطق بكسل متصلة تطابق عتبة أو أكثر من عتبات LAB.
pixels_threshold يرشح الاكتشافات الصغيرة؛ merge=True يدمج الكتل المتداخلة.import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.VGA)
csi0.window((640, 80)) # narrow strip for fast linear scanning
csi0.snapshot(time=2000) # let AWB/AGC stabilize
csi0.auto_gain(False)
csi0.auto_whitebal(False)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
for code in img.find_barcodes():
img.draw_rectangle(code.rect, color=(0, 255, 0))
print(code.payload, "(quality %d)" % code.quality)
print(clock.fps(), "fps")
قراءة الباركود أحادي البعد
ابحث عن الباركود أحادي البعد في أي مكان بالإطار وفكّ تشفير محتواه.
import csi
import time
import ml
from ml.postprocessing.mediapipe import HandLandmarks
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
csi0.window((400, 400)) # square window for the model
csi0.snapshot(time=2000) # let AWB/AGC stabilize
# Connections between the 21 keypoints — palm + 5 fingers.
hand_lines = ((0, 1), (1, 2), (2, 3), (3, 4), (0, 5), (5, 6),
(6, 7), (7, 8), (5, 9), (9, 10), (10, 11), (11, 12),
(9, 13), (13, 14), (14, 15), (15, 16), (13, 17), (17, 18),
(18, 19), (19, 20), (0, 17))
model = ml.Model("/rom/hand_landmarks_full_224.tflite",
postprocess=HandLandmarks(threshold=0.4))
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
# predict returns a list per hand: index 0 = left, index 1 = right.
for detections in model.predict([img]):
for rect, score, keypoints in detections:
ml.utils.draw_skeleton(img, keypoints, hand_lines,
kp_color=(255, 0, 0),
line_color=(0, 255, 0))
print(clock.fps(), "fps")
تتبع 21 نقطة مفتاحية لليد
نموذج MediaPipe Hand Landmarks من Google يضع 21 مفصلًا على كل يد مكتشفة — المعصم والمفاصل وأطراف الأصابع.
/rom/hand_landmarks_full_224.tflite — يعمل مستقلًا هنا دون كشف الكف المسبق.ml.utils.draw_skeleton يرسم جميع المفاصل الـ 21 والاتصالات بينها في استدعاء واحد.جديد على OpenMV؟
ابدأ بالدرس التعليمي خطوة بخطوة — يغطي إعداد العتاد وبيئة التطوير والبرامج النصية الأساسية ونصائح لأول مشروع حقيقي.
المكتبات الأساسية
APIالعتاد والكاميرات ومعالجة الصور والمصفوفات متعددة الأبعاد والتعلم الآلي وتعدد المهام والشبكات وخوادم الويب والبلوتوث — كل ذلك من MicroPython.
machine
العتاد منخفض المستوى: GPIO وSPI وI²C وUART وPWM وADC والمؤقتات.
استكشف →csi
التحكم في الكاميرا: تنسيقات البكسل وأحجام الإطار والتعريض والكسب وتوازن الأبيض.
استكشف →image
رؤية الآلة: الكتل والحواف والخطوط والدوائر والمميزات والرسم.
استكشف →ulab
الحوسبة الرقمية على الجهاز — المصفوفات متعددة الأبعاد والتحويلات الفورية لـ Fourier والجبر الخطي.
استكشف →ml
استنتاج الشبكة العصبية على الجهاز — التصنيف والكشف والتجزئة.
استكشف →asyncio
تعدد المهام التعاوني — تشغيل الكاميرا والشبكة والإدخال/الإخراج بالتوازي.
استكشف →network
Wi-Fi وEthernet والمقابس لإنترنت الأشياء والاتصال عن بُعد.
استكشف →microdot
خادم HTTP بسيط — المسارات والجلسات وتسجيل الدخول وSSE وWebSockets.
استكشف →aioble
Bluetooth Low Energy غير متزامن — الأجهزة الطرفية والإعلان وGATT.
استكشف →استكشاف حسب اللوحة
العتاداختر OpenMV Cam لعرض تخطيط الدبابيس والمواصفات والمرجع السريع الخاص باللوحة.

OpenMV N6 جديد
STM32N6 مع NPU مدمج — أول وحدة MCU معجَّلة بالذكاء الاصطناعي من STMicro.
استكشف →
OpenMV AE3 جديد
Alif Ensemble E3 — فئة Fusion من Cortex-M55 مع NPU من نوع Ethos-U55.
استكشف →
OpenMV RT1062
NXP i.MX RT1062 Cortex-M7 بتردد 600 ميجاهرتز مع 32 ميجابايت SDRAM خارجي.
استكشف →
OpenMV H7 Plus
STM32H743 مع 32 ميجابايت SDRAM خارجي ومستشعر OV5640 بدقة 5 ميجابكسل.
استكشف →
OpenMV H7
STM32H743 Cortex-M7 مع وحدة استشعار صور قابلة للإزالة.
استكشف →
Arduino Nicla Vision
لوحة STM32H747 مدمجة 23 × 23 مم مع مستشعر مدمج.
استكشف →
Arduino Portenta
STM32H747 مع 8 ميجابايت SDRAM ودعم Vision Shield.
استكشف →
Arduino Giga
STM32H747 مع 8 ميجابايت SDRAM ودعم Vision وDisplay Shield.
استكشف →الدروع
الإضافاتلوحات إضافية تتصل بـ OpenMV Cam — الشبكات والتحكم في المحركات وشاشات العرض والمزيد.

Gigabit PoE Shield
Gigabit Ethernet مع PoE للبث عالي النطاق الترددي.
استكشف →
Servo Shield
تشغيل ما يصل إلى 4 محركات سيرفو بتيار يصل إلى 5 أمبير مع تغذية الكاميرا، دخل 6–36 فولت.
استكشف →
Battery Shield
دخل بطارية 1.8–5.5 فولت عبر موصل DC.
استكشف →
Touch LCD Shield
شاشة SPI LCD مقاس 2.3 بوصة مع لمس متعدد سعوي وQwiic.
استكشف →
PoE Shield
Ethernet 10/100 مع الطاقة عبر الإيثرنت.
استكشف →
PIR Shield
مشغّل حركة في وضع الاستعداد 6 ميكروأمبير مع إضاءة بيضاء وأشعة IR بطول موجي 850 نانومتر.
استكشف →
CAN/RS232 Shield
CAN-FD بسرعة 8 ميجابت/ث وRS-232 بسرعة 1 ميجابت/ث في درع واحد.
استكشف →
RS422/RS485 Shield
اتصال تسلسلي تفاضلي بسرعة 10 ميجابت/ث للحافلات الصناعية.
استكشف →المستشعرات
وحدات الكاميراوحدات الكاميرا ومحولات الاستشعار التي تتصل بالموصل بين اللوحتين — رؤية ملونة وأحادية اللون وحرارية وقائمة على الأحداث.

PS5520 5MP HDR Camera
مستشعر HDR بدقة 5 ميجابكسل — نطاق ديناميكي عالٍ للإضاءة الصعبة.
استكشف →
Multispectral Thermal (PAG7936)
ستار عالمي ملون بدقة 1 ميجابكسل + حراري FLIR Lepton في وحدة واحدة.
استكشف →
Multispectral Thermal (OV5640)
ستار متدحرج ملون بدقة 5 ميجابكسل + حراري FLIR Lepton في وحدة واحدة.
استكشف →
Multispectral Event Camera
مستشعر أحداث GENX320 + ملوّن PAG7936 في وحدة واحدة.
استكشف →
GENX320 Event Camera
رؤية قائمة على الأحداث من Prophesee — دقة زمنية بالميكروثانية.
استكشف →
FLIR Boson Adapter
محوّل لـ FLIR Boson / Boson+ — حراري بدقة أعلى.
استكشف →
FLIR Lepton Adapter
محوّل لأنوية حرارية FLIR Lepton 1.x / 2.x / 3.x.
استكشف →
Global Shutter Camera Module
مستشعر أحادي اللون بستار عالمي لتصوير الحركة السريعة.
استكشف →