Konenäkö,
yksinkertaistettuna.
Reaaliaikainen kasvojentunnistus, AprilTag-seuranta, QR-skannaus ja YOLO. Kaikki laitteella pelkässä MicroPythonissa. Ei isäntätietokonetta, ei pilveä.
Avaa IDE
Lataa ja asenna OpenMV IDE Windowsille, macOS:lle tai Linuxille ja käynnistä IDE.
Yhdistä kamerasi
Kytke OpenMV Cam tietokoneeseen USB:n kautta. Sininen sykkivä LED vilkkuu, kun se on valmis.
Suorita ensimmäinen skriptisi
Napsauta pistokekuvakkeen yhdistämispainiketta IDE:ssä, sitten napsauta vihreää toistopainiketta suorittaaksesi ensimmäisen skriptisi.
Hei maailma
Esimerkitimport 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")
Reaaliaikainen henkilöseuranta
Sisäänrakennettu YOLOv8-malli on yksipuolilainen henkilöntunnistin — int8-kvantisoitu ja toimitettu ROM:issa.
/rom/yolov8n_192.tflite — ei SD-korttia tai latausta tarvita.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")
Paikanna ja tunnista AprilTagit
AprilTagit ovat 2D-viitemerkkejä — kestäviä liikesumuutokselle ja osittaiselle peittymiselle, ja ne antavat täyden 3D-asennon.
x/y/z-siirtymä ja x/y/z-kierto.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")
Tunnista kasvoja BlazeFacella
Googlen BlazeFace on kevyt TensorFlow Lite -kasvontunnistin, joka palauttaa rajoitusruudut sekä kuusi maamerkkiä per kasvot.
/rom/blazeface_front_128.tflite — ennalta kvantisoitu, ei latausta tarvita.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")
Skannaa QR-koodeja reaaliaikaisesta kuvasta
Sisäänrakennettu QR-dekooderi käsittelee kallistuneita, vääristyneitä ja osittain peittyneitä koodeja.
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")
Löydä väriläiskiä
find_blobs palauttaa yhtenäisiä pikselialueita, jotka vastaavat yhtä tai useampaa LAB-kynnysarvoa.
pixels_threshold suodattaa pienet havainnot; merge=True yhdistää päällekkäiset läiskät.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")
Lue 1D-viivakoodeja
Löydä 1D-viivakoodeja mistä tahansa kuvan kohdasta ja dekoodaa niiden sisältö.
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")
Seuraa 21 käden avainpistettä
Googlen MediaPipe Hand Landmarks -malli sijoittaa 21 niveltä jokaiselle havaitulle kädelle — ranne, nyrkkinivelet ja sormenpäät.
/rom/hand_landmarks_full_224.tflite — toimii itsenäisesti tässä, ilman ylöspäin tapahtuvaa kämmenentunnistusta.ml.utils.draw_skeleton piirtää kaikki 21 niveltä ja yhteydet yhdellä kutsulla.Uusi OpenMV-käyttäjä?
Aloita vaiheittaisella opetusohjelmalla — se kattaa laitteiston asennuksen, IDE:n, perusskriptit ja vinkit ensimmäiseen todelliseen projektiisi.
Ydinkirjastot
APILaitteisto, kamerat, kuvankäsittely, ndarray-taulukot, ML, rinnakkaistehtävät, verkkoliikenne, web-palvelimet ja Bluetooth — kaikki MicroPythonilla.
machine
Matalan tason laitteisto: GPIO, SPI, I²C, UART, PWM, ADC ja ajastimet.
Tutustu →csi
Kameran ohjaus: pikselimuodot, kuvakoot, valotus, vahvistus ja valkotasapaino.
Tutustu →image
Konenäkö: läiskät, reunat, viivat, ympyrät, piirteet ja piirtäminen.
Tutustu →ulab
Laitteen sisäinen numeerinen laskenta — ndarray-taulukot, FFT:t ja lineaarialgebra.
Tutustu →ml
Laitteen sisäinen neuroverkkosuoritus — luokittele, tunnista ja segmentoi.
Tutustu →asyncio
Yhteistyöllinen rinnakkaistehtävien hallinta — suorita kamera, verkko ja I/O rinnakkain.
Tutustu →network
Wi-Fi, Ethernet ja pistorasiat IoT:lle ja etäviestintään.
Tutustu →microdot
Minimaalinen HTTP-palvelin — reitit, istunnot, kirjautuminen, SSE ja WebSocketit.
Tutustu →aioble
Asynkroninen Bluetooth Low Energy — oheislaitteet, mainostaminen ja GATT.
Tutustu →Selaa laudan mukaan
LaitteistoValitse OpenMV Cam nähdäksesi sen kytkentäkaavion, tekniset tiedot ja lautakohtaisen pikaviitteen.

OpenMV N6 Uusi
STM32N6 sisäänrakennetulla NPU:lla — STMicron ensimmäinen tekoälyllä kiihdytetty MCU.
Tutustu →
OpenMV AE3 Uusi
Alif Ensemble E3 — fuusioluokan Cortex-M55 Ethos-U55 NPU:lla.
Tutustu →
OpenMV RT1062
NXP i.MX RT1062 Cortex-M7 600 MHz:n nopeudella ja 32 Mt ulkoisella SDRAM:lla.
Tutustu →
OpenMV H7 Plus
STM32H743 ja 32 Mt ulkoinen SDRAM sekä 5 MP:n OV5640-anturi.
Tutustu →
OpenMV H7
STM32H743 Cortex-M7 irrotettavalla kuva-anturimoduulilla.
Tutustu →
Arduino Nicla Vision
Kompakti 23 × 23 mm STM32H747-lauta sisäänrakennetulla anturilla.
Tutustu →
Arduino Portenta
STM32H747 ja 8 Mt SDRAM sekä Vision Shield -tuki.
Tutustu →
Arduino Giga
STM32H747 ja 8 Mt SDRAM sekä Vision- ja Display Shield -tuki.
Tutustu →Suojalevyt
LisäosatLisäosalaudat, jotka kytkeytyvät OpenMV Cam -laitteeseen — verkkoliikenne, moottorin ohjaus, näytöt ja paljon muuta.

Gigabit PoE Shield
Gigabit Ethernet PoE:lla suuremman kaistanleveyden suoratoistoon.
Tutustu →
Servo Shield
Ohjaa jopa 4 servomoottoria, jotka kuluttavat jopa 5 A, samalla kun kamera saa virtansa, 6–36 V:n tulo.
Tutustu →
Battery Shield
1,8–5,5 V:n akkuliitäntä DC-tynnyripistokkeen kautta.
Tutustu →
Touch LCD Shield
2,3" SPI LCD kapasitatiivisella monisormikosketuksella ja Qwiic-liittimellä.
Tutustu →
PoE Shield
10/100 Ethernet Power-over-Ethernet-tuella.
Tutustu →
PIR Shield
6 µA:n valmiustilan liiketriggeri sekä valkoinen ja 850 nm:n IR-valo.
Tutustu →
CAN/RS232 Shield
8 Mb/s CAN-FD sekä 1 Mb/s RS-232 yhdessä suojalevyssä.
Tutustu →
RS422/RS485 Shield
10 Mb/s differentiaalinen sarja teollisuusväylille.
Tutustu →Anturit
KameramoduulitKameramoduulit ja anturiadapterit, jotka kytkeytyvät lauta-lauta-liittimeen — väri-, mustavalko-, lämpö- ja tapahtumanäkö.

PS5520 5MP HDR Camera
5 MP:n HDR-anturi — suuri dynaaminen alue haastaviin valaistusolosuhteisiin.
Tutustu →
Multispectral Thermal (PAG7936)
1 MP:n global-shutter-värimoduuli + FLIR Lepton lämpö yhdessä moduulissa.
Tutustu →
Multispectral Thermal (OV5640)
5 MP:n rolling-shutter-värimoduuli + FLIR Lepton lämpö yhdessä moduulissa.
Tutustu →
Multispectral Event Camera
GENX320-tapahtumaanturi + PAG7936-väri yhdessä moduulissa.
Tutustu →
GENX320 Event Camera
Prophesee-tapahtumanäkö — mikrosekuntitason aikatarkkuus.
Tutustu →
FLIR Boson Adapter
Adapteri FLIR Boson / Boson+ -kameroille — korkeamman resoluution lämpökuvaus.
Tutustu →
FLIR Lepton Adapter
Adapteri FLIR Lepton 1.x / 2.x / 3.x -lämpöytimille.
Tutustu →
Global Shutter Camera Module
Mustavalkoinen global-shutter-anturi nopealiikkeiseen tallentamiseen.
Tutustu →Lisää resursseja
MicroPythonOpenMV MicroPython -kieli
Kieliviite, syntaksi ja ytimen ajonaikainen semantiikka.
Erot CPythonista
Missä MicroPython poikkeaa standardista Pythonista — moduulit, sisäänrakennetut funktiot ja syntaksi.
OpenMV MicroPython-sisäisyydet
Kääntäjä, ajonaikainen ympäristö, natiivimoduulit ja MicroPythonin siirtäminen uusille MCU:ille.
Yhteisö & linkit
UlkoisetOpenMV-kotisivu
Tuotteet, sovellukset, lataukset ja uutiset.
Foorumit
Yhteisökeskustelu, apu ja projektien jakaminen.
OpenMV GitHubissa
Laiteohjelmisto, IDE ja esimerkkikoodit — ongelmaraportit ja vetopyynnöt ovat tervetulleita.
MicroPython GitHubissa
Alkuperäiset MicroPython-laiteohjelmistolähteet — se, mitä OpenMV rakentaa päälle.