Strojové vidění,
jednoduše.
Detekce tváří v reálném čase, sledování AprilTag, skenování QR kódů a YOLO. Vše přímo v zařízení v čistém MicroPython. Bez hostitelského počítače, bez cloudu.
Otevřít IDE
Stáhněte a nainstalujte OpenMV IDE pro Windows, macOS nebo Linux a spusťte IDE.
Připojte kameru
Zapojte OpenMV Cam do počítače přes USB. Modrá pulzní LED bliká, když je kamera připravena.
Spusťte první skript
Klikněte na tlačítko připojení se ikonou zásuvky v IDE a poté stiskněte zelené tlačítko přehrávání pro spuštění prvního skriptu.
Hello world
Příkladyimport 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")
Sledování osob v reálném čase
Integrovaný model YOLOv8 je detektor osob pro jednu třídu — kvantizovaný na int8 a uložený v ROM.
/rom/yolov8n_192.tflite — není potřeba SD karta ani stahování.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")
Lokalizace a identifikace AprilTag
AprilTags jsou 2D referenční značky — odolné vůči rozmazání pohybem a částečnému zakrytí a poskytují úplnou 3D polohu.
x/y/z a rotaci 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")
Detekce tváří pomocí BlazeFace
BlazeFace od Google je odlehčený detektor tváří TensorFlow Lite, který vrací ohraničující rámečky a šest klíčových bodů na každou tvář.
/rom/blazeface_front_128.tflite — předkvantizováno, není třeba stahovat.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")
Skenování QR kódů z živého přenosu
Vestavěný dekodér QR zpracovává nakloněné, zdeformované a částečně zakryté kódy.
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")
Hledání barevných skvrn
find_blobs vrací propojené oblasti pixelů odpovídající jednomu nebo více prahovým hodnotám LAB.
pixels_threshold filtruje malé detekce; merge=True spojuje překrývající se skvrny.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")
Čtení 1D čárových kódů
Najděte 1D čárové kódy kdekoliv ve snímku a dekódujte jejich obsah.
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")
Sledování 21 klíčových bodů ruky
Model MediaPipe Hand Landmarks od Google umisťuje 21 kloubů na každou detekovanou ruku — zápěstí, klouby a špičky prstů.
/rom/hand_landmarks_full_224.tflite — zde běží samostatně, bez předchozí detekce dlaně.ml.utils.draw_skeleton nakreslí všech 21 kloubů a spojení v jednom volání.Jste noví v OpenMV?
Začněte podrobným tutoriálem — zahrnuje nastavení hardware, IDE, základní skripty a tipy pro první skutečný projekt.
Základní knihovny
APIHardware, kamery, zpracování obrazu, pole ndarray, ML, multitasking, sítě, webové servery a Bluetooth — vše z MicroPython.
machine
Hardware nízké úrovně: GPIO, SPI, I²C, UART, PWM, ADC a časovače.
Prozkoumat →csi
Ovládání kamery: formáty pixelů, velikosti snímků, expozice, zesílení a vyvážení bílé.
Prozkoumat →image
Strojové vidění: skvrny, hrany, čáry, kruhy, funkce a kreslení.
Prozkoumat →ulab
Numerické výpočty přímo v zařízení — pole ndarray, FFT a lineární algebra.
Prozkoumat →ml
Inference neuronové sítě přímo v zařízení — klasifikace, detekce a segmentace.
Prozkoumat →asyncio
Kooperativní multitasking — spusťte kameru, síť a I/O paralelně.
Prozkoumat →network
Wi-Fi, Ethernet a sokety pro IoT a vzdálenou komunikaci.
Prozkoumat →microdot
Minimální HTTP server — trasy, relace, přihlašování, SSE a WebSockets.
Prozkoumat →aioble
Asynchronní Bluetooth Low Energy — periferie, reklama a GATT.
Prozkoumat →Prozkoumat podle desky
HardwareVyberte svůj OpenMV Cam a zobrazte jeho pinout, specifikace a rychlou referenci specifickou pro danou desku.

OpenMV N6 Novinka
STM32N6 s integrovaným NPU — první MCU od STMicro s akcelerací AI.
Prozkoumat →
OpenMV AE3 Novinka
Alif Ensemble E3 — fúzní třída Cortex-M55 s NPU Ethos-U55.
Prozkoumat →
OpenMV RT1062
NXP i.MX RT1062 Cortex-M7 na 600 MHz s 32 MB externím SDRAM.
Prozkoumat →
OpenMV H7 Plus
STM32H743 s 32 MB externím SDRAM a senzorem OV5640 5 MP.
Prozkoumat →
OpenMV H7
STM32H743 Cortex-M7 s vyjímatelným modulem obrazového senzoru.
Prozkoumat →
Arduino Nicla Vision
Kompaktní deska STM32H747 23 × 23 mm s integrovaným senzorem.
Prozkoumat →
Arduino Portenta
STM32H747 s 8 MB SDRAM a podporou Vision Shield.
Prozkoumat →
Arduino Giga
STM32H747 s 8 MB SDRAM a podporou Vision a Display Shield.
Prozkoumat →Rozšiřující desky
DoplňkyDoplňkové desky, které se připojují k OpenMV Cam — sítě, řízení motorů, displeje a další.

Gigabit PoE Shield
Gigabitový Ethernet s PoE pro streamování s vyšší šířkou pásma.
Prozkoumat →
Servo Shield
Ovládejte až 4 serva s odběrem až 5 A při napájení kamery, vstup 6–36 V.
Prozkoumat →
Battery Shield
Vstup baterie 1,8–5,5 V přes DC napájecí konektor.
Prozkoumat →
Touch LCD Shield
SPI LCD 2,3″ s kapacitním vícedotykovým ovládáním a Qwiic.
Prozkoumat →
PoE Shield
10/100 Ethernet s Power-over-Ethernet.
Prozkoumat →
PIR Shield
Pohybový spouštěč v pohotovostním režimu 6 µA plus bílé a 850 nm IR osvětlení.
Prozkoumat →
CAN/RS232 Shield
8 Mb/s CAN-FD plus 1 Mb/s RS-232 v jedné rozšiřující desce.
Prozkoumat →
RS422/RS485 Shield
10 Mb/s diferenciální sériová komunikace pro průmyslové sběrnice.
Prozkoumat →Senzory
Kamerové modulyKamerové moduly a senzorové adaptéry, které se připojují ke konektoru deska-deska — barevné, monochromatické, termální a vizuální senzory na bázi událostí.

PS5520 5MP HDR Camera
Senzor HDR 5 MP — vysoký dynamický rozsah pro náročné osvětlení.
Prozkoumat →
Multispectral Thermal (PAG7936)
Globální uzávěrka 1 MP barevná + FLIR Lepton termální v jednom modulu.
Prozkoumat →
Multispectral Thermal (OV5640)
Rolovací uzávěrka 5 MP barevná + FLIR Lepton termální v jednom modulu.
Prozkoumat →
Multispectral Event Camera
Senzor událostí GENX320 + barevný PAG7936 v jednom modulu.
Prozkoumat →
GENX320 Event Camera
Vizuální senzory na bázi událostí Prophesee — mikrosekundová časová přesnost.
Prozkoumat →
FLIR Boson Adapter
Adaptér pro FLIR Boson / Boson+ — termální senzor s vyšším rozlišením.
Prozkoumat →
FLIR Lepton Adapter
Adaptér pro termální jádra FLIR Lepton 1.x / 2.x / 3.x.
Prozkoumat →
Global Shutter Camera Module
Monochromatický senzor s globální uzávěrkou pro zachycení rychlého pohybu.
Prozkoumat →Další zdroje
MicroPythonJazyk OpenMV MicroPython
Jazyková reference, syntaxe a základní sémantika běhového prostředí.
Rozdíly oproti CPython
Kde se MicroPython odchyluje od standardního Python — moduly, vestavěné funkce a syntaxe.
Vnitřní struktura OpenMV MicroPython
Překladač, běhové prostředí, nativní moduly a portování MicroPython na nové MCU.