Strojni vid,
učinjen jednostavnim.
Živo prepoznavanje lica, praćenje AprilTag, skeniranje QR i YOLO. Sve na uređaju u čistom MicroPython-u. Bez host računala, bez oblaka.
Otvori IDE
Preuzmite i instalirajte OpenMV IDE za Windows, macOS ili Linux i pokrenite IDE.
Poveži svoju kameru
Priključite OpenMV Cam u računalo putem USB-a. Plava LED srčanog ritma trepće kada je spreman.
Pokreni svoju prvu skriptu
Kliknite gumb za povezivanje s ikonom utičnice u IDE-u, zatim pritisnite zelenu strelicu za reprodukciju kako biste pokrenuli svoju prvu skriptu.
Pozdrav svijetu
Primjeriimport 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")
Praćenje osoba u stvarnom vremenu
Ugrađeni YOLOv8 model je detektor osoba jedne klase — int8 kvantiziran i isporučen u ROM-u.
/rom/yolov8n_192.tflite — nije potrebna SD kartica ili preuzimanje.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")
Pronađite i identificirajte AprilTag oznake
AprilTag su 2D fiducijalni markeri — robusni na zamagljenje pokretom i djelomično zaklanjanje, i daju punu 3D pozu.
x/y/z translacija i x/y/z rotacija.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")
Otkrijte lica s BlazeFace
Google BlazeFace je lagani TensorFlow Lite detektor lica koji vraća okvire granica plus šest ključnih točaka po licu.
/rom/blazeface_front_128.tflite — unaprijed kvantiziran, nije potrebno preuzimanje.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")
Skenirajte QR kodove iz živog prijenosa
Ugrađeni QR dekoder obrađuje nagnute, iskrivljene i djelomično zaklanjavane kodove.
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")
Pronađite nakupine boje
find_blobs vraća spojene regije piksela koje odgovaraju jednom ili više LAB praga.
pixels_threshold filtrira male detekcije; merge=True spaja preklapajuće nakupine.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")
Čitajte 1D barkodove
Pronađite 1D barkodove bilo gdje u okviru i dekodirajte njihove korisne poruke.
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")
Praćenje 21 ključne točke ruke
Google MediaPipe Hand Landmarks model postavlja 21 zglob na svaku detektiranu ruku — zapešće, zglobovi prstiju i vrhovi prstiju.
/rom/hand_landmarks_full_224.tflite — ovdje se izvodi samostalno, bez detekcije dlana uzvodno.ml.utils.draw_skeleton crta svih 21 zglob i veze u jednom pozivu.Novi ste u OpenMV-u?
Počnite s korak-po-korak vodičem — pokriva postavljanje hardvera, IDE, osnovne skripte i savjete za vaš prvi pravi projekt.
Temeljne biblioteke
APIHardver, kamere, obrada slika, ndarray-i, ML, višezadaćnost, umrežavanje, web poslužitelji i Bluetooth — sve iz MicroPython-a.
machine
Hardver niske razine: GPIO, SPI, I²C, UART, PWM, ADC i mjerači vremena.
Istraži →csi
Upravljanje kamerom: formati piksela, veličine okvira, ekspozicija, pojačanje i balans bjeline.
Istraži →image
Strojni vid: nakupine, rubovi, linije, kružnice, značajke i crtanje.
Istraži →ulab
Numeričko računanje na uređaju — ndarray-i, FFT-ovi i linearna algebra.
Istraži →ml
Inferencija neuronske mreže na uređaju — klasificirati, detektirati i segmentirati.
Istraži →asyncio
Kooperativna višezadaćnost — paralelno pokretanje kamere, mreže i I/O.
Istraži →network
Wi-Fi, Ethernet i utičnice za IoT i daljinsku komunikaciju.
Istraži →microdot
Minimalni HTTP poslužitelj — rute, sesije, prijava, SSE i WebSockets.
Istraži →aioble
Async Bluetooth Low Energy — periferni uređaji, oglašavanje i GATT.
Istraži →Istraži po ploči
HardverOdaberite svoju OpenMV Cam za pregled rasporeda pinova, specifikacija i brzih referenci specifičnih za ploču.

OpenMV N6 Novo
STM32N6 s ugrađenim NPU — STMicro-ov prvi AI-ubrzani MCU.
Istraži →
OpenMV AE3 Novo
Alif Ensemble E3 — Cortex-M55 s Ethos-U55 NPU.
Istraži →
OpenMV RT1062
NXP i.MX RT1062 Cortex-M7 na 600 MHz s 32 MB vanjskog SDRAM-a.
Istraži →
OpenMV H7 Plus
STM32H743 s 32 MB vanjskog SDRAM-a i 5MP OV5640 senzorom.
Istraži →
OpenMV H7
STM32H743 Cortex-M7 s izmjenjivim modulom senzora slike.
Istraži →
Arduino Nicla Vision
Kompaktna 23 × 23 mm STM32H747 ploča s ugrađenim senzorom.
Istraži →
Arduino Portenta
STM32H747 s 8 MB SDRAM-a i podrškom za Vision Shield.
Istraži →
Arduino Giga
STM32H747 s 8 MB SDRAM-a, podrškom za Vision i Display Shield.
Istraži →Štitovi
DodaciDodatne ploče koje se priključuju u OpenMV Cam — umrežavanje, upravljanje motorima, zasloni i više.

Gigabit PoE Shield
Gigabit Ethernet s PoE za streaming veće propusnosti.
Istraži →
Servo Shield
Pogon do 4 servo motora uz potrošnju do 5A uz napajanje kamere, ulaz 6–36V.
Istraži →
Battery Shield
Ulaz baterije 1,8–5,5V putem DC barrel priključka.
Istraži →
Touch LCD Shield
2,3" SPI LCD s kapacitivnim višestrukim dodirom i Qwiic.
Istraži →
PoE Shield
10/100 Ethernet s napajanjem putem Etherneta.
Istraži →
PIR Shield
6µA standby okidač pokreta plus bijela i 850 nm IR.
Istraži →
CAN/RS232 Shield
8 Mb/s CAN-FD plus 1 Mb/s RS-232 u jednom štitu.
Istraži →
RS422/RS485 Shield
10 Mb/s diferencijalna serijska veza za industrijske sabirnice.
Istraži →Senzori
Moduli kamereModuli kamere i adapteri senzora koji se priključuju u konektor ploča-do-ploče — kolor, monokromatski, toplinski i vizija temeljena na događajima.

PS5520 5MP HDR Camera
5MP HDR senzor — visoki dinamički raspon za teške uvjete osvjetljenja.
Istraži →
Multispectral Thermal (PAG7936)
1-MP global-shutter kolor + FLIR Lepton termalni na jednom modulu.
Istraži →
Multispectral Thermal (OV5640)
5MP rolling-shutter kolor + FLIR Lepton termalni na jednom modulu.
Istraži →
Multispectral Event Camera
GENX320 event senzor + PAG7936 kolor na jednom modulu.
Istraži →
GENX320 Event Camera
Prophesee vizija temeljena na događajima — mikrosekudna vremenska preciznost.
Istraži →
FLIR Boson Adapter
Adapter za FLIR Boson / Boson+ — toplinski prikaz veće rezolucije.
Istraži →
FLIR Lepton Adapter
Adapter za FLIR Lepton 1.x / 2.x / 3.x termalne jezgre.
Istraži →
Global Shutter Camera Module
Monokromatski global-shutter senzor za hvatanje brzih pokreta.
Istraži →Više resursa
MicroPythonOpenMV MicroPython jezik
Referenca jezika, sintaksa i semantika jezgre izvršavanja.
Razlike od CPython-a
Gdje se MicroPython razlikuje od standardnog Python-a — moduli, ugrađene funkcije i sintaksa.
OpenMV MicroPython interna logika
Prevodilac, izvršavanje, nativni moduli i portiranje MicroPython-a na nove MCU-e.
Zajednica & poveznice
VanjskeOpenMV početna stranica
Proizvodi, aplikacije, preuzimanja i vijesti.
Forumi
Rasprava zajednice, pomoć i dijeljenje projekata.
OpenMV na GitHub-u
Firmware, IDE i izvorni primjeri — problemi i zahtjevi za povučenjem su dobrodošli.
MicroPython na GitHub-u
Gornji MicroPython firmware izvori — na čemu OpenMV gradi.