Gépi látás,
egyszerűen.
Élő arcfelismerés, AprilTag követés, QR szkennelés és YOLO. Minden az eszközön, tiszta MicroPython-ban. Nincs szükség gazdagépre vagy felhőre.
Nyissa meg az IDE-t
Töltse le és telepítse az OpenMV IDE-t Windows, macOS vagy Linux rendszerre, majd indítsa el az IDE-t.
Csatlakoztassa a kameráját
Csatlakoztassa az OpenMV Cam-et a számítógépéhez USB-en keresztül. Egy kék szívverés LED villog, amikor készen áll.
Futtassa az első szkriptjét
Kattintson a csatlakozás gombra az IDE-ben, majd nyomja meg a zöld lejátszás nyilat az első szkript futtatásához.
Hello world
Példákimport 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")
Valós idejű személykövetés
A beépített YOLOv8 modell egyosztályos személydetektor — int8 kvantált és ROM-ban szállított.
/rom/yolov8n_192.tflite fájlból — nincs szükség SD kártyára vagy letöltésre.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")
AprilTag-ek megkeresése és azonosítása
Az AprilTag-ek 2D referencia markerek — mozgási elmosódással és részleges takarással szemben robusztusak, és teljes 3D-s pozíciót adnak.
x/y/z eltolás és x/y/z forgás.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")
Arcfelismerés BlazeFace segítségével
A Google BlazeFace egy könnyűsúlyú TensorFlow Lite arcfelismerő, amely befoglaló téglalapokat és hat mérföldkövet ad vissza arconként.
/rom/blazeface_front_128.tflite fájlból — előre kvantált, nincs szükség letöltésre.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 kódok szkennelése élő adatfolyamból
A beépített QR dekóder kezeli a döntött, torzított és részben takart kódokat.
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")
Színes foltok keresése
find_blobs visszaadja az egy vagy több LAB küszöbértéknek megfelelő összefüggő pixelrégiókat.
pixels_threshold kiszűri az apró felismeréseket; merge=True összekapcsolja az átfedő foltokat.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")
1D vonalkódok olvasása
Keressen 1D vonalkódokat bárhol a képkockában és dekódolja azok tartalmát.
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 kéz kulcspont követése
A Google MediaPipe Hand Landmarks modell 21 ízületet helyez el minden felismert kézen — csukló, ujjpercek és ujjhegyek.
/rom/hand_landmarks_full_224.tflite fájlból — itt önállóan fut, tenyérfelismerés nélkül.ml.utils.draw_skeleton egyetlen hívásban rajzolja meg mind a 21 ízületet és azok kapcsolatait.Új az OpenMV-nél?
Kezdje a lépésről lépésre haladó útmutatóval — lefedi a hardver beállítását, az IDE-t, az alapvető szkripteket és tippeket az első valódi projekthez.
Alapkönyvtárak
APIHardver, kamerák, képfeldolgozás, ndarray-ok, ML, többfeladatos végrehajtás, hálózatkezelés, webszerverek és Bluetooth — mind MicroPython-ból.
machine
Alacsony szintű hardver: GPIO, SPI, I²C, UART, PWM, ADC és időzítők.
Fedezze fel →csi
Kameravezérlés: pixelformátumok, képkockaméret, expozíció, erősítés és fehéregyensúly.
Fedezze fel →image
Gépi látás: foltok, élek, vonalak, körök, jellemzők és rajzolás.
Fedezze fel →ulab
Eszközön végzett numerikus számítás — ndarray-ok, FFT-k és lineáris algebra.
Fedezze fel →ml
Eszközön végzett neurális hálózati következtetés — osztályozás, felismerés és szegmentálás.
Fedezze fel →asyncio
Kooperatív többfeladatos végrehajtás — kamera, hálózat és I/O párhuzamos futtatása.
Fedezze fel →network
Wi-Fi, Ethernet és socketek IoT és távoli kommunikációhoz.
Fedezze fel →microdot
Minimális HTTP szerver — útvonalak, munkamenetek, bejelentkezés, SSE és WebSocketek.
Fedezze fel →aioble
Aszinkron Bluetooth Low Energy — perifériák, hirdetés és GATT.
Fedezze fel →Felfedezés lap szerint
HardverVálassza ki az OpenMV Cam-jét a lábkiosztás, specifikációk és lapspecifikus gyors referencia megtekintéséhez.

OpenMV N6 Új
STM32N6 beépített NPU-val — az STMicro első AI-gyorsított MCU-ja.
Fedezze fel →
OpenMV AE3 Új
Alif Ensemble E3 — fusion osztályú Cortex-M55 Ethos-U55 NPU-val.
Fedezze fel →
OpenMV RT1062
NXP i.MX RT1062 Cortex-M7 600 MHz-en 32 MB külső SDRAM-mal.
Fedezze fel →
OpenMV H7 Plus
STM32H743 32 MB külső SDRAM-mal és 5MP OV5640 érzékelővel.
Fedezze fel →
OpenMV H7
STM32H743 Cortex-M7 cserélhető képérzékelő modullal.
Fedezze fel →
Arduino Nicla Vision
Kompakt 23 × 23 mm-es STM32H747 lap beépített érzékelővel.
Fedezze fel →
Arduino Portenta
STM32H747 8 MB SDRAM-mal és Vision Shield támogatással.
Fedezze fel →
Arduino Giga
STM32H747 8 MB SDRAM-mal, Vision és Display Shield támogatással.
Fedezze fel →Pajzsok
BővítményekAz OpenMV Cam-hez csatlakoztatható bővítő lapok — hálózatkezelés, motormeghajtás, kijelzők és még sok más.

Gigabit PoE Shield
Gigabites Ethernet PoE-vel a nagyobb sávszélességű streaminghez.
Fedezze fel →
Servo Shield
Legfeljebb 4 szervomotor meghajtása legfeljebb 5A áramfelvétellel, miközben táplálja a kamerát, 6–36V bemenet.
Fedezze fel →
Battery Shield
1,8–5,5V akkumulátor bemenet DC tápcsatlakozón keresztül.
Fedezze fel →
Touch LCD Shield
2,3" SPI LCD kapacitív multi-touch érintővel és Qwiic csatlakozóval.
Fedezze fel →
PoE Shield
10/100 Ethernet Power-over-Ethernet funkcióval.
Fedezze fel →
PIR Shield
6µA készenléti mozgásérzékelő plusz fehér és 850 nm IR megvilágítás.
Fedezze fel →
CAN/RS232 Shield
8 Mb/s CAN-FD plusz 1 Mb/s RS-232 egy pajzsban.
Fedezze fel →
RS422/RS485 Shield
10 Mb/s differenciális soros ipari buszokhoz.
Fedezze fel →Érzékelők
KameramodulokKameramodulok és érzékelő adapterek, amelyek a lap-lap csatlakozóba dughatók — színes, monokróm, hőkamerás és eseményalapú látás.

PS5520 5MP HDR Camera
5MP HDR érzékelő — nagy dinamikatartomány nehéz megvilágítási körülményekhez.
Fedezze fel →
Multispectral Thermal (PAG7936)
1MP globális záras szín + FLIR Lepton hőkamera egy modulban.
Fedezze fel →
Multispectral Thermal (OV5640)
5MP gördülő záras szín + FLIR Lepton hőkamera egy modulban.
Fedezze fel →
Multispectral Event Camera
GENX320 eseményérzékelő + PAG7936 szín egy modulban.
Fedezze fel →
GENX320 Event Camera
Prophesee eseményalapú látás — mikroszekundumos időbeli pontosság.
Fedezze fel →
FLIR Boson Adapter
Adapter FLIR Boson / Boson+ számára — nagyobb felbontású hőkép.
Fedezze fel →
FLIR Lepton Adapter
Adapter FLIR Lepton 1.x / 2.x / 3.x hőkamera magokhoz.
Fedezze fel →
Global Shutter Camera Module
Monokróm globális záras érzékelő gyors mozgás rögzítéséhez.
Fedezze fel →További erőforrások
MicroPythonOpenMV MicroPython nyelv
Nyelvi referencia, szintaxis és alapvető futásidejű szemantika.
Különbségek a CPython-tól
Ahol a MicroPython eltér a standard Python-tól — modulok, beépített elemek és szintaxis.
OpenMV MicroPython belső működés
Fordítóprogram, futásidő, natív modulok és a MicroPython portolása új MCU-kra.
Közösség & linkek
KülsőOpenMV főoldal
Termékek, alkalmazások, letöltések és hírek.
Fórumok
Közösségi megbeszélés, segítség és projektmegosztás.
OpenMV a GitHub-on
Firmware, IDE és példa források — hibák és pull requestek szívesen fogadva.
MicroPython a GitHub-on
Az upstream MicroPython firmware forrásai — amire az OpenMV épül.