Vedere artificială,
simplificată.
Detectare live a fețelor, urmărire AprilTag, scanare QR și YOLO. Totul pe dispozitiv în MicroPython pur. Fără calculator gazdă, fără cloud.
Deschide IDE-ul
Descarcă și instalează OpenMV IDE pentru Windows, macOS sau Linux și lansează IDE-ul.
Conectează camera
Conectează OpenMV Cam la computer prin USB. Un LED albastru clipește când este gata.
Rulează primul tău script
Apasă butonul de conectare cu pictograma mufă din IDE, apoi apasă săgeata verde de redare pentru a rula primul tău script.
Hello world
Exempleimport 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")
Urmărire persoane în timp real
Modelul YOLOv8 integrat este un detector de persoane cu o singură clasă — cuantificat int8 și furnizat în ROM.
/rom/yolov8n_192.tflite — nu este necesar card SD sau descărcare.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")
Localizează și identifică AprilTag-uri
AprilTag-urile sunt markeri fiduciali 2D — robuști la estomparea de mișcare și ocluzia parțială și furnizează poziția 3D completă.
x/y/z și rotație 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")
Detectează fețe cu BlazeFace
BlazeFace de la Google este un detector de fețe TensorFlow Lite ușor care returnează dreptunghiuri de delimitare plus șase puncte de referință per față.
/rom/blazeface_front_128.tflite — pre-cuantificat, nu este necesară descărcarea.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")
Scanează coduri QR dintr-un flux live
Decodorul QR integrat gestionează coduri înclinate, distorsionate și parțial obstrucționate.
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")
Găsește regiuni de culoare
find_blobs returnează regiuni de pixeli conectați care corespund unuia sau mai multor praguri LAB.
pixels_threshold filtrează detecțiile mici; merge=True unește regiunile suprapuse.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")
Citește coduri de bare 1D
Găsește coduri de bare 1D oriunde în cadru și decodifică conținutul lor.
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")
Urmărește 21 de puncte cheie ale mâinii
Modelul MediaPipe Hand Landmarks de la Google plasează 21 de articulații pe fiecare mână detectată — încheietura, articulațiile degetelor și vârfurile degetelor.
/rom/hand_landmarks_full_224.tflite — rulează de sine stătător aici, fără detecție de palmă în amonte.ml.utils.draw_skeleton desenează toate cele 21 de articulații și conexiuni într-un singur apel.Nou la OpenMV?
Începe cu tutorialul pas cu pas — acoperă configurarea hardware, IDE-ul, scripturile de bază și sfaturi pentru primul tău proiect real.
Biblioteci de bază
APIHardware, camere, procesare de imagini, ndarray-uri, ML, multitasking, rețele, servere web și Bluetooth — totul din MicroPython.
machine
Hardware de nivel scăzut: GPIO, SPI, I²C, UART, PWM, ADC și temporizatoare.
Explorează →csi
Control cameră: formate de pixeli, dimensiuni cadre, expunere, câștig și balans de alb.
Explorează →image
Vedere artificială: regiuni, muchii, linii, cercuri, caracteristici și desenare.
Explorează →ulab
Calcul numeric pe dispozitiv — ndarray-uri, FFT-uri și algebră liniară.
Explorează →ml
Inferență de rețele neuronale pe dispozitiv — clasificare, detectare și segmentare.
Explorează →asyncio
Multitasking cooperativ — rulează camera, rețeaua și I/O în paralel.
Explorează →network
Wi-Fi, Ethernet și socket-uri pentru IoT și comunicare la distanță.
Explorează →microdot
Server HTTP minimal — rute, sesiuni, autentificare, SSE și WebSocket-uri.
Explorează →aioble
Bluetooth Low Energy asincron — periferice, publicitate și GATT.
Explorează →Explorează după placă
HardwareSelectează OpenMV Cam pentru a vedea pinout-ul, specificațiile și referința rapidă specifică plăcii.

OpenMV N6 Nou
STM32N6 cu NPU integrat — primul MCU accelerat AI de la STMicro.
Explorează →
OpenMV AE3 Nou
Alif Ensemble E3 — Cortex-M55 de clasă fusion cu NPU Ethos-U55.
Explorează →
OpenMV RT1062
NXP i.MX RT1062 Cortex-M7 la 600 MHz cu 32 MB SDRAM extern.
Explorează →
OpenMV H7 Plus
STM32H743 cu 32 MB SDRAM extern și un senzor OV5640 de 5MP.
Explorează →
OpenMV H7
STM32H743 Cortex-M7 cu modul de senzor de imagine detașabil.
Explorează →
Arduino Nicla Vision
Placă compactă STM32H747 de 23 × 23 mm cu senzor integrat.
Explorează →
Arduino Portenta
STM32H747 cu 8 MB SDRAM și suport Vision Shield.
Explorează →
Arduino Giga
STM32H747 cu 8 MB SDRAM, suport Vision și Display Shield.
Explorează →Shield-uri
SuplimentePlăci suplimentare care se conectează la OpenMV Cam — rețele, control motoare, ecrane și altele.

Gigabit PoE Shield
Ethernet Gigabit cu PoE pentru streaming de bandă largă.
Explorează →
Servo Shield
Controlează până la 4 servo-uri ce consumă până la 5A alimentând simultan camera, intrare 6–36V.
Explorează →
Battery Shield
Intrare baterie 1,8–5,5V printr-un conector DC cilindric.
Explorează →
Touch LCD Shield
LCD SPI de 2,3" cu multi-touch capacitiv și Qwiic.
Explorează →
PoE Shield
Ethernet 10/100 cu Power-over-Ethernet.
Explorează →
PIR Shield
Declanșator de mișcare în standby de 6µA plus IR alb și 850 nm.
Explorează →
CAN/RS232 Shield
CAN-FD de 8 Mb/s plus RS-232 de 1 Mb/s într-un singur shield.
Explorează →
RS422/RS485 Shield
Serial diferențial de 10 Mb/s pentru magistrale industriale.
Explorează →Senzori
Module camerăModule cameră și adaptoare de senzori care se conectează la conectorul placă-la-placă — viziune color, monocromă, termică și bazată pe evenimente.

PS5520 5MP HDR Camera
Senzor HDR de 5MP — gamă dinamică ridicată pentru iluminare dificilă.
Explorează →
Multispectral Thermal (PAG7936)
Color cu obturator global de 1 MP + termic FLIR Lepton pe un singur modul.
Explorează →
Multispectral Thermal (OV5640)
Color cu obturator rulant de 5MP + termic FLIR Lepton pe un singur modul.
Explorează →
Multispectral Event Camera
Senzor de evenimente GENX320 + color PAG7936 pe un singur modul.
Explorează →
GENX320 Event Camera
Vedere bazată pe evenimente Prophesee — precizie temporală de microsecunde.
Explorează →
FLIR Boson Adapter
Adaptor pentru FLIR Boson / Boson+ — termic de rezoluție mai mare.
Explorează →
FLIR Lepton Adapter
Adaptor pentru nuclee termice FLIR Lepton 1.x / 2.x / 3.x.
Explorează →
Global Shutter Camera Module
Senzor monocrom cu obturator global pentru capturarea mișcărilor rapide.
Explorează →Mai multe resurse
MicroPythonLimbajul OpenMV MicroPython
Referință de limbaj, sintaxă și semantică de execuție de bază.
Diferențe față de CPython
Unde MicroPython diferă de Python standard — module, funcții built-in și sintaxă.
Componentele interne ale OpenMV MicroPython
Compilator, execuție, module native și portarea MicroPython pe MCU-uri noi.
Comunitate & linkuri
ExternPagina principală OpenMV
Produse, aplicații, descărcări și noutăți.
Forumuri
Discuții comunitate, ajutor și partajare proiecte.
OpenMV pe GitHub
Surse firmware, IDE și exemple — problemele și pull request-urile sunt binevenite.
MicroPython pe GitHub
Sursele upstream MicroPython — pe care OpenMV se construiește.