csi — camerasensoren¶
De csi-module is de moderne, objectgeoriënteerde interface naar de camerasensor(en) op een OpenMV Cam. Elke fysieke sensor wordt vertegenwoordigd door een CSI-instantie, zodat de multispectrale beeldvormingsborden die een kleursensor combineren met een thermische of event-sensor elk afzonderlijk kunnen worden aangestuurd door een andere cid aan de constructor door te geven. Cams met één sensor instantiëren simpelweg één CSI.
Een CSI-object beheert de volledige sensorconfiguratie – pixelformaat, framesize / venster, belichting / versterking / witbalans, hardwarematige spiegeling en omkering, kleurbalk-testpatroon, framesnelheidsklok, ROI voor automatische belichting, en chipspecifieke ioctl-commando’s. Frames worden vastgelegd met CSI.snapshot(), dat een image.Image retourneert die wordt ondersteund door de framebuffer.
Deze module vervangt de verouderde sensor-module (die dezelfde functionaliteit blootstelde als functies op moduleniveau die gebonden waren aan één verborgen sensor). Nieuwe code zou CSI moeten gebruiken.
Voorbeeldgebruik:
import csi
# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # skip frames
# Take pictures.
while(True):
csi0.snapshot()
Asyncio-gebruik¶
De blokkerende CSI.snapshot()-lus hierboven werkt niet samen met de asyncio-event-loop – terwijl snapshot op het volgende frame wacht, is elke andere coroutine in het programma bevroren. Om een opnamelus te laten samengaan met ander gelijktijdig werk (een UART-client, een knopbewaker, een netwerktaak), verpak je CSI in een kleine adapter die snapshot omzet in een await-vriendelijke coroutine door snapshot(blocking=False) te pollen en de besturing tussen controles aan de event-loop af te geven:
import asyncio
import csi
class AsyncCSI:
def __init__(self, *args, **kwargs):
self._csi = csi.CSI(*args, **kwargs)
def __getattr__(self, name):
return getattr(self._csi, name)
async def snapshot(self):
while True:
img = self._csi.snapshot(blocking=False)
if img is not None:
return img
await asyncio.sleep_ms(0)
__getattr__ stuurt elk ander attribuut (reset, pixformat, framesize, de sensorknoppen) door naar de onderliggende CSI, zodat de wrapper een directe vervanging is. De eerste niet-blokkerende aanroep start ook de DMA-opname van de camera als deze nog niet liep, dus er is geen extra bootstrap nodig.
Een opnamelus past dan in een groter asyncio-programma als gewoon nog een coroutine:
async def capture_loop(cam):
while True:
img = await cam.snapshot()
# process img here
async def main():
cam = AsyncCSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.QVGA)
asyncio.create_task(some_other_task())
await capture_loop(cam)
asyncio.run(main())
De framebuffers-instelling is in deze vorm nog steeds van belang – in de enkele-buffermodus retourneert snapshot(blocking=False) None totdat het volgende frame is vastgelegd, terwijl dubbele of drievoudige buffering dat gladstrijkt zodat de wrapper meestal bij de eerste poll al een gebufferd frame klaar vindt staan. Zie het AsyncCSI-sluitstuk in de asyncio-tutorial voor de volledige uitleg.
class CSI – Camera Sensor Interface¶
De CSI-klasse wordt gebruikt om een camerasensor te besturen.
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
Maak een object aan om met een camerasensor te communiceren. Op borden met meerdere sensoren kan het specifieke CSI-object worden geselecteerd door een
cidzoalscsi.LEPTONdoor te geven om een FLIR Lepton-sensormodule te selecteren. Alscid-1 is, wordt de primaire sensor geselecteerd (doorgaans een kleurcameramodule op borden met meerdere sensoren).Als
delaysFalseis, worden alle wachttijden voor stabilisatie in de csi-driver uitgeschakeld. Standaard wacht de sensordriver na een reset / moduswijziging om te voorkomen dat corrupte frames doorCSI.snapshotworden geretourneerd. Door vertragingen uit te schakelen kun je updates bundelen en één enkele vertraging aan het einde toepassen voordat jeCSI.snapshotaanroept.Als
fflushFalseis, wordt het automatisch leegmaken van de framebuffer dat inCSI.framebufferswordt genoemd, uitgeschakeld. Hiermee wordt elke tijdslimiet op frames in de framebuffer-fifo opgeheven.streambepaalt of deze CSI de streambron is die naar de IDE wordt verzonden. AlsNone(standaard), wordt de CSI alleen de streambron als het de primaire (niet-hulp) sensor is. GeefTruedoor om deze CSI te dwingen de streambron te zijn, of een willekeurige onwaar-waarde om de bestaande streambron ongewijzigd te laten.Methoden¶
- reset(hard: bool = True) None¶
Initialiseert de camerasensor. Voert een hardwarereset uit door het RESET-signaal-GPIO naar de cameramodule te schakelen als
hardTrueis.hardmoet op false worden ingesteld bij het resetten van hulpcamerasensoren die hetzelfde RESET-signaal-GPIO delen als de primaire module.
- shutdown(enable: bool) None¶
Zet de camera in een lagere energiemodus dan de slaapstand (maar de camera moet bij het ontwaken worden gereset).
- sleep(enable: bool) None¶
Zet de camera in de slaapstand als
enableTrue is. Anders wordt deze weer gewekt.
- flush() None¶
Kopieert de huidige framebufferinhoud naar de IDE-preview. Roep dit aan na de laatste
CSI.snapshotals het script wordt beëindigd, zodat de IDE het laatste frame toont.
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
Maakt een foto met de camera en retourneert een
image.Image-object.Als
timeen/offrameswordt doorgegeven, blokkeert snapshot gedurende zoveeltimemilliseconden en/offramesdie van de camera zijn vastgelegd. Beide argumenten kunnen tegelijkertijd worden gebruikt. Nadattimeen/offramesis verstreken, retourneert snapshotNone.blockingkanFalsezijn om niet-blokkerend gedrag in te schakelen, waardoor snapshotNoneretourneert wanneer de volgende afbeelding van de camera niet klaar is in plaats van te wachten.imagekan een anderimage.Image-object zijn dat wordt bijgewerkt met de nieuwe afbeelding die van de camera is vastgelegd, in plaats van een nieuwimage.Image-object te retourneren. De vorige afbeeldingsinhoud wordt overschreven via een diepe kopie.Als
CSI.auto_rotationis ingeschakeld, retourneert deze methode een reeds geroteerdeimage.Image.
- cid() int¶
Retourneert de chip-ID van de cameramodule. Vergelijk met een van
csi.OV2640,csi.OV5640,csi.OV7670,csi.OV7690,csi.OV7725,csi.OV9650,csi.MT9V022,csi.MT9V024,csi.MT9V032,csi.MT9V034,csi.MT9M114,csi.BOSON320,csi.BOSON640,csi.LEPTON,csi.HM01B0,csi.HM0360,csi.GC2145,csi.GENX320ES,csi.GENX320,csi.PAG7920,csi.PAG7936,csi.PAJ6100,csi.FROGEYE2020, ofcsi.SOFTCSI.
- readable() bool¶
Retourneert
Trueals er een afbeelding klaarstaat om doorCSI.snapshotte worden geretourneerd, zodat een aanroep van snapshot niet blokkeert.
- pixformat(pixformat: int | None = None) int | None¶
Stelt het pixelformaat voor de cameramodule in op een van
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422, ofcsi.JPEG(alleen op de OV2640/OV5640).Retourneert het huidige pixformat als deze zonder argumenten wordt aangeroepen.
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
Stelt de framesize voor de cameramodule in op een van de grootteconstanten (bijv.
csi.QVGA,csi.VGA,csi.HD, enz. — zie de sectie constanten).Je kunt ook een aangepaste framesize doorgeven als een
(w, h)-tuple. WanneerCSI.snapshotwordt aangeroepen, wordt de aangepaste framesize geëvalueerd tegen DMA-regels. Over het algemeen moeten framesizes een veelvoud zijn van 8 pixels en/of 16 bytes.Retourneert de huidige framesize als deze zonder argumenten wordt aangeroepen.
- framerate(rate: int | None = None) int | None¶
Stelt de framesnelheid in Hz voor de cameramodule in.
Retourneert de huidige framesnelheid als deze zonder argumenten wordt aangeroepen.
Notitie
CSI.frameratewerkt door frames die van de cameramodule worden ontvangen te laten vallen om de framesnelheid op of onder de opgegeven snelheid te houden. Standaard draait de camera op de maximale framesnelheid. Indien geïmplementeerd voor de specifieke camerasensor, zalCSI.framerateook de framesnelheid van de camerasensor intern verlagen om energie te besparen en de beeldkwaliteit te verbeteren door de sensorbelichting te verhogen.CSI.frameratekan op sommige camera’s conflicteren metCSI.auto_exposure.
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
Stelt de resolutie van de camera in op een subregio van de huidige resolutie.
roiis een(x, y, w, h)-tuple. Je kunt ook(w, h)doorgeven, waarna het venster wordt gecentreerd.Retourneert de huidige
(x, y, w, h)-tuple als deze zonder argumenten wordt aangeroepen.
- gainceiling(gainceiling: int) bool¶
Stelt het gainceiling van de camera-afbeelding in op een van 2, 4, 8, 16, 32, 64 of 128.
Retourneert
Truebij succes enFalsebij mislukking.
- brightness(brightness: int) bool¶
Stelt de helderheid van de camera-afbeelding in.
Retourneert
Truebij succes enFalsebij mislukking.
- contrast(contrast: int) bool¶
Stelt het contrast van de camera-afbeelding in.
Retourneert
Truebij succes enFalsebij mislukking.
- saturation(saturation: int) bool¶
Stelt de verzadiging van de camera-afbeelding in.
Retourneert
Truebij succes enFalsebij mislukking.
- quality(quality: int) bool¶
Stelt de JPEG-compressiekwaliteit van de camera-afbeelding in. 0 - 100.
Retourneert
Truebij succes enFalsebij mislukking.Notitie
Alleen voor de OV2640/OV5640-camera’s.
- colorbar(enable: bool) bool¶
Schakelt de kleurbalkmodus in (
True) of uit (False). Standaard uit.Retourneert
Truebij succes enFalsebij mislukking.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enableschakelt automatische versterkingsregeling in (True) of uit (False). De camera start op met automatische versterkingsregeling aan.Als
enableFalseis, kun je metgain_dbeen vaste versterking in decibel instellen.Als
enableTrueis, kun je metgain_db_ceilinghet maximale versterkingsplafond in decibel instellen voor het automatische versterkingsregelingsalgoritme.Notitie
Je moet ook de witbalans uitschakelen als je kleuren wilt volgen.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enableschakelt automatische belichtingsregeling in (True) of uit (False). De camera start op met automatische belichtingsregeling aan.Als
enableFalseis, kun je metexposure_useen vaste belichtingstijd in microseconden instellen.Notitie
Algoritmes voor automatische belichting van de camera zijn vrij conservatief in hoeveel ze de belichtingswaarde aanpassen en vermijden over het algemeen het sterk wijzigen van de belichtingswaarde. In plaats daarvan wijzigen ze de versterkingswaarde veel om met veranderende belichtingsomstandigheden om te gaan.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enableschakelt automatische witbalans in (True) of uit (False). De camera start op met automatische witbalans aan.Als
enableFalseis, kun je metrgb_gain_dbeen vaste versterking in decibel instellen voor respectievelijk de rode, groene en blauwe kanalen.Notitie
Je moet ook de versterkingsregeling uitschakelen als je kleuren wilt volgen.
- rgb_gain_db() Tuple[float, float, float]¶
Retourneert een tuple
(r, g, b)van de huidige rode, groene en blauwe versterkingswaarden van de camera in decibel.
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
Stelt de automatische zwartniveaukalibratie (BLC) op de camera in.
enablegeefTrueofFalsedoor om BLC in of uit te schakelen. Doorgaans wil je dit altijd aan hebben.regsals uitgeschakeld, kun je de BLC-registerwaarden handmatig instellen op basis van een eerdere aanroep vanCSI.blc_regs.
- blc_regs() List[int]¶
Retourneert de BLC-registers van de sensor als een lijst van gehele getallen. Voor gebruik met
CSI.auto_blc.
- hmirror(enable: bool | None = None) bool | None¶
Schakelt de horizontale spiegelmodus in (
True) of uit (False). Standaard uit.Retourneert de huidige instelling als deze zonder argumenten wordt aangeroepen.
- vflip(enable: bool | None = None) bool | None¶
Schakelt de verticale omkeermodus in (
True) of uit (False). Standaard uit.Retourneert de huidige instelling als deze zonder argumenten wordt aangeroepen.
- transpose(enable: bool | None = None) bool | None¶
Schakelt de transponeermodus in (
True) of uit (False). Standaard uit.vflip=False, hmirror=False, transpose=False -> rotatie van 0 graden
vflip=True, hmirror=False, transpose=True -> rotatie van 90 graden
vflip=True, hmirror=True, transpose=False -> rotatie van 180 graden
vflip=False, hmirror=True, transpose=True -> rotatie van 270 graden
Retourneert de huidige instelling als deze zonder argumenten wordt aangeroepen.
- auto_rotation(enable: bool | None = None) bool | None¶
Schakelt de automatische rotatiemodus in (
True) of uit (False). Standaard uit.Retourneert de huidige instelling als deze zonder argumenten wordt aangeroepen.
Notitie
Deze methode werkt alleen wanneer de OpenMV Cam een
imuheeft geïnstalleerd en wordt automatisch ingeschakeld.
- framebuffers(count: int | None = None) int | None¶
Stelt het aantal framebuffers in dat wordt gebruikt om afbeeldingsgegevens te ontvangen. Standaard probeert de OpenMV Cam het maximale aantal framebuffers toe te wijzen dat mogelijk is. Heralllocatie vindt plaats wanneer
CSI.pixformat,CSI.framesize, ofCSI.windowworden aangeroepen.countvan 1 (enkele buffer), 2 (dubbele buffer), of 3 (drievoudige buffer) selecteert de bijbehorende opnamemodus. Geef 4 of hoger door om de driver in video-FIFO-modus te zetten waarcountbuffers in de wachtrij worden geplaatst — handig voor video-opname naar een SD-kaart. Bij frameverlies worden alle framebuffers behalve de actieve gewist, zodatCSI.snapshotaltijd een recent frame retourneert.Retourneert de huidige count als deze zonder argumenten wordt aangeroepen.
- special_effect(effect: int) bool¶
Stelt het speciale digitale effect in (een van
csi.NORMALofcsi.NEGATIVE).Retourneert
Truebij succes enFalsebij mislukking.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTrueom in te schakelen,Falseom uit te schakelen.radigeheeltallige straal van te corrigeren pixels.coefmate van correctie.Retourneert
Truebij succes enFalsebij mislukking.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
Registreert callback
cbom te worden uitgevoerd (in interrupt-context) telkens wanneer de cameramodule een nieuw frame genereert (maar voordat het frame is ontvangen).cbneemt één argument en krijgt de huidige toestand van de vsync-pin na het wijzigen doorgegeven.Retourneert de geregistreerde callback als deze zonder argumenten wordt aangeroepen. Geef een willekeurig niet-aanroepbaar object door om de callback te wissen.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
Registreert callback
cbom te worden uitgevoerd (in interrupt-context) telkens wanneer de cameramodule een nieuw frame genereert en het frame klaar is om viaCSI.snapshotte worden gelezen.cbneemt geen argumenten. Gebruik dit om het later lezen van een frame in te plannen metmicropython.schedule().Retourneert de geregistreerde callback als deze zonder argumenten wordt aangeroepen. Geef een willekeurig niet-aanroepbaar object door om de callback te wissen.
- ioctl(request: int, *args) Any¶
Voert een sensorspecifiek verzoek uit.
requestis een van deIOCTL_*-constanten; de overige positionele argumenten en de retourwaarde hangen af van het verzoek. De ondersteunde verzoeken zijn hieronder gegroepeerd per sensorfamilie.Generiek (elke sensor):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))Stelt het uitleesvenster van de sensor in. Een kleiner venster verhoogt de framesnelheid ten koste van het gezichtsveld.
ioctl(IOCTL_GET_READOUT_WINDOW)Retourneert het huidige uitleesvenster als een
(x, y, w, h)-tuple.ioctl(IOCTL_SET_TRIGGERED_MODE, enable)Schakelt de getriggerde modus op de MT9V034 in (
True) of uit (False).ioctl(IOCTL_GET_TRIGGERED_MODE)Retourneert de huidige toestand van de getriggerde modus als een
bool.ioctl(IOCTL_SET_FOV_WIDE, enable)Wanneer
True, instrueerframesize()om te optimaliseren voor het gezichtsveld in plaats van de framesnelheid.ioctl(IOCTL_GET_FOV_WIDE)Retourneert de huidige FOV-wide-toestand als een
bool.ioctl(IOCTL_SET_NIGHT_MODE, enable)Schakelt de “nachtmodus” van de sensor voor weinig licht in (
True) of uit (False). Alleen OV7725 en OV5640.ioctl(IOCTL_GET_NIGHT_MODE)Retourneert de huidige nachtmodus-toestand als een
bool.ioctl(IOCTL_GET_RGB_STATS)Retourneert een 4-tuple van ruwe RGB-kanaalstatistieken
(r, gb, gr, b)die van de sensor zijn gelezen (doorgaans gebruikt voor witbalansafstemming).
OV5640 FPC – autofocus:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)Start een autofocus-sweep op de OV5640 FPC-module.
ioctl(IOCTL_PAUSE_AUTO_FOCUS)Pauzeert een lopende autofocus-sweep.
ioctl(IOCTL_RESET_AUTO_FOCUS)Reset de autofocuspositie naar de standaardwaarde.
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)Blokkeert totdat de huidige autofocus-sweep is voltooid.
timeout_msis standaard 5000 indien weggelaten.
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)Retourneert de breedte van de Lepton-afbeelding in pixels.
ioctl(IOCTL_LEPTON_GET_HEIGHT)Retourneert de hoogte van de Lepton-afbeelding in pixels.
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)Retourneert het type van de Lepton (radiometrisch of niet) als een int.
ioctl(IOCTL_LEPTON_GET_REFRESH)Retourneert de verversingssnelheid van de Lepton in Hz.
ioctl(IOCTL_LEPTON_GET_RESOLUTION)Retourneert de ADC-resolutie van de Lepton in bits.
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)Voert een FLIR Lepton SDK-commando uit.
cmdis de 16-bits commando-id die door de SDK is gedefinieerd.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Schrijft een Lepton SDK-attribuut.
attr_idis de 16-bits attribuut-id;payloadis eenbytes/bytearraywaarvan de lengte een veelvoud van 16 bits moet zijn.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Leest een Lepton SDK-attribuut.
attr_idis de 16-bits attribuut-id;wordsis het aantal te lezen 16-bits woorden. Retourneert eenbytearray.ioctl(IOCTL_LEPTON_GET_FPA_TEMP)Retourneert de temperatuur van de focal-plane-array van de Lepton in graden Celsius.
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)Retourneert de hulptemperatuur van de Lepton in graden Celsius.
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)Schakelt de Lepton tussen AGC- en directe-temperatuuruitvoer.
measurement_enabled=Trueschakelt directe temperatuuruitvoer in. De optionelehigh_temp_enabled-vlag selecteert het hoge-temperatuurbereik.ioctl(IOCTL_LEPTON_GET_MODE)Retourneert een 2-tuple
(measurement_enabled, high_temp_enabled).ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))Stelt het temperatuurbereik in dat wordt toegewezen aan
0..255wanneer de meetmodus is ingeschakeld.ioctl(IOCTL_LEPTON_GET_RANGE)Retourneert het huidige
(min_celsius, max_celsius)-bereik.
Himax HM01B0 – bewegingsdetectie:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)Schakelt het on-sensor bewegingsdetectieblok van de HM01B0 in (
True) of uit (False).ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))Stelt het bewegingsdetectievenster op de HM01B0 in.
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)Stelt de bewegingsdetectiedrempelwaarde in (
0–255).ioctl(IOCTL_HIMAX_MD_CLEAR)Wist de interruptvergrendeling van de bewegingsdetectie.
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)Schakelt de interne oscillator van de HM01B0 in (
True) of uit (False).
Prophesee GENX320 – event-sensor:
ioctl(IOCTL_GENX320_SET_BIASES, preset)Past een bias-preset toe.
presetis een van deGENX320_BIASES_*-constanten.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Stelt een enkele bias in.
biasis een van deGENX320_BIAS_*-constanten;valueis de geheeltallige instelling.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Configureert het anti-flikkerfilter.
enableis een bool; de optionele frequentieargumenten stellen de doorlaatband van het filter in.ioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])Configureert het spatio-temporele contrastfilter.
modeis een van deGENX320_STC_*-constanten; maximaal twee verdere argumenten zijn modusspecifiek.ioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)Schakelt de sensor tussen frame- en event-modus.
modeis een van deGENX320_MODE_*-constanten. Voor de event-modus isevt_resde lengte van de rij-as van de event-buffer die aanIOCTL_GENX320_READ_EVENTSwordt doorgegeven.ioctl(IOCTL_GENX320_READ_EVENTS, buf)Leest events in
buf, eenuint16ndarrayvan vorm(EVT_res, 6)waarbijEVT_reseen macht van twee is tussen 1024 en 65536. De kolommen zijn:[0]– eventtype (PIX_OFF_EVENT/PIX_ON_EVENT/ trigger).[1]– seconden.[2]– milliseconden.[3]– microseconden.[4]–x-coördinaat.[5]–y-coördinaat.
Retourneert het aantal geschreven events.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)Retourneert een
image.Imagedie het ruwe event-frame van de GENX320 bevat.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)Schakelt pixels uit waarvan de ruis meer dan
sigmastandaarddeviaties van de normale verdeling afwijkt.iterationsis het geheeltallige aantal kalibratiedoorgangen. Retourneert het aantal uitgeschakelde pixels.
- color_palette(palette: int | None = None) int | None¶
Stelt het te gebruiken kleurenpalet in voor zaken als de conversie van FLIR Lepton-grijswaarden naar RGB565 of GENX320-eventvisualisatie. Een van
image.PALETTE_RAINBOW,image.PALETTE_IRONBOW, en (indien ondersteund)image.PALETTE_DEPTH,image.PALETTE_EVT_DARK, ofimage.PALETTE_EVT_LIGHT.Retourneert de huidige instelling als deze zonder argumenten wordt aangeroepen.
Functies¶
Constanten¶
- csi.BINARY: int¶
BINARY (bitmap) pixelformaat. Elke pixel is 1-bit. Handig voor maskeropslag; kan worden gebruikt met
image.Image().
- csi.RGB565: int¶
RGB565 pixelformaat. Elke pixel is 16-bits (5-bits rood, 6-bits groen, 5-bits blauw).
- csi.YUV422: int¶
YUV422 pixelformaat. Elke pixel wordt opgeslagen als een grijswaarden 8-bits Y-waarde gevolgd door afwisselende 8-bits U/V-kleurwaarden die worden gedeeld tussen twee Y-waarden (Y1, U, Y2, V, …). Slechts enkele beeldverwerkingsmethoden werken met YUV422.
- csi.JPEG: int¶
JPEG-modus. De cameramodule levert gecomprimeerde JPEG-afbeeldingen. Gebruik
CSI.qualityom de JPEG-kwaliteit te regelen. Werkt alleen voor de OV2640/OV5640-camera’s.
- csi.NORMAL: int¶
Normale modus voor
CSI.special_effect.
- csi.NEGATIVE: int¶
Negatieve modus voor
CSI.special_effect.
- csi.SXGA: int¶
1280x1024-resolutie voor de camerasensor. Werkt alleen voor de OV2640/OV5640-camera’s.
- csi.UXGA: int¶
1600x1200-resolutie voor de camerasensor. Werkt alleen voor de OV2640/OV5640-camera’s.
- csi.IOCTL_GET_TRIGGERED_MODE: int¶
Haalt de toestand van de getriggerde modus op voor de MT9V034. Zie
CSI.ioctl.
- csi.IOCTL_SET_FOV_WIDE: int¶
Schakelt
CSI.framesizein om te optimaliseren voor gezichtsveld boven FPS. ZieCSI.ioctl.
- csi.IOCTL_GET_FOV_WIDE: int¶
Retourneert of
CSI.framesizeoptimaliseert voor gezichtsveld boven FPS. ZieCSI.ioctl.
- csi.IOCTL_PAUSE_AUTO_FOCUS: int¶
Pauzeert autofocus (tijdens het draaien) voor de OV5640 FPC-cameramodule. Zie
CSI.ioctl.
- csi.IOCTL_RESET_AUTO_FOCUS: int¶
Reset autofocus naar de standaardwaarde voor de OV5640 FPC-cameramodule. Zie
CSI.ioctl.
- csi.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
Wacht tot autofocus is voltooid op de OV5640 FPC-cameramodule. Zie
CSI.ioctl.
- csi.IOCTL_SET_NIGHT_MODE: int¶
Schakelt de nachtmodus in of uit. Verlaagt de framesnelheid om de belichting dynamisch te verhogen. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_WIDTH: int¶
Retourneert de breedte van de FLIR Lepton-afbeeldingsresolutie in pixels. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_HEIGHT: int¶
Retourneert de hoogte van de FLIR Lepton-afbeeldingsresolutie in pixels. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RADIOMETRY: int¶
Retourneert het FLIR Lepton-type (radiometrisch of niet). Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_REFRESH: int¶
Retourneert de verversingssnelheid van de FLIR Lepton in Hz. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RESOLUTION: int¶
Retourneert de ADC-resolutie van de FLIR Lepton in bits. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_RUN_COMMAND: int¶
Voert een 16-bits commando uit van de FLIR Lepton SDK. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_ATTRIBUTE: int¶
Stelt een FLIR Lepton-attribuut in van de FLIR Lepton SDK. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_ATTRIBUTE: int¶
Haalt een FLIR Lepton-attribuut op van de FLIR Lepton SDK. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_FPA_TEMP: int¶
Haalt de FLIR Lepton FPA-temperatuur op in Celsius. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_AUX_TEMP: int¶
Haalt de FLIR Lepton AUX-temperatuur op in Celsius. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_MODE: int¶
Zet de FLIR Lepton-driver in een modus waarin elke pixel een temperatuurwaarde is. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_MODE: int¶
Retourneert of de meetmodus is ingeschakeld voor de FLIR Lepton-sensor. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_RANGE: int¶
Stelt het temperatuurbereik in dat aan pixelwaarden wordt toegewezen in de meetmodus. Zie
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RANGE: int¶
Retourneert het temperatuurbereik dat voor de meetmodus wordt gebruikt. Zie
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_ENABLE: int¶
Bestuurt de bewegingsdetectie-interrupt op de HM01B0. Zie
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_THRESHOLD: int¶
Stelt de bewegingsdetectiedrempelwaarde op de HM01B0 in. Zie
CSI.ioctl.
- csi.IOCTL_GENX320_SET_BIASES: int¶
Stelt de biases van de GENX320-sensor in op een van de
GENX320_BIASES_*-presets. ZieCSI.ioctl. NaCSI.resetpast de drivercsi.GENX320_BIASES_LOW_NOISEtoe, nietcsi.GENX320_BIASES_DEFAULT— gebruik deze ioctl om naar een andere preset te schakelen wanneer de applicatie meer gevoeligheid of bandbreedte nodig heeft.
- csi.GENX320_BIASES_DEFAULT: int¶
GenX320-datablad-standaardwaarden — gebalanceerde gevoeligheid, ruis en bandbreedte voor algemene scènes.
- csi.GENX320_BIASES_LOW_LIGHT: int¶
Afgestemd op omstandigheden met weinig licht — beide contrastdrempelwaarden versoepeld voor hogere gevoeligheid, FO verlaagd, HPF uitgeschakeld zodat langzame helderheidsveranderingen toch worden geregistreerd.
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
Afgestemd op het volgen van knipperende LED’s met hoog contrast (actieve markers) — contrastdrempelwaarden verhoogd zodat alleen scherpe overgangen triggeren, FO en HPF hoog opgevoerd om de bandbreedte te maximaliseren en langzame omgevingsdrift te verwerpen, REFR=0 zodat elke knipperflank wordt vastgelegd.
- csi.GENX320_BIASES_LOW_NOISE: int¶
Driver-standaardwaarde — lagere gevoeligheid dan
DEFAULT(verhoogde contrastdrempelwaarden) en een lagere FO voor minder achtergrondruisactiviteit. Het best voor statische of langzame scènes waar valse events zouden overheersen.
- csi.GENX320_BIASES_HIGH_SPEED: int¶
Afgestemd op scènes met snelle beweging — hogere FO voor bredere pixelbandbreedte, hogere HPF om langzame veranderingen te verwerpen, hogere REFR voor een langere dode tijd na elke event zodat de uitlezing niet verzadigt.
- csi.IOCTL_GENX320_SET_BIAS: int¶
Stelt een enkele bias van de GENX320-sensor in op een DAC-waarde. Geef een
GENX320_BIAS_*-constante door (csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPF, ofcsi.GENX320_BIAS_REFR) en een geheeltallige DAC-waarde. Elke bias is onafhankelijk — roep deze ioctl herhaaldelijk aan om na het toepassen van een preset alleen de biases aan te passen die je nodig hebt. ZieCSI.ioctl.
- csi.GENX320_BIAS_DIFF_OFF: int¶
Negatieve comparator-contrastdrempelwaarde — bepaalt hoeveel een pixel moet verdonkeren voordat een
csi.PIX_OFF_EVENTafgaat. Lagere waarde = gevoeliger (meer events).
- csi.GENX320_BIAS_DIFF_ON: int¶
Positieve comparator-contrastdrempelwaarde — bepaalt hoeveel een pixel moet verhelderen voordat een
csi.PIX_ON_EVENTafgaat. Lagere waarde = gevoeliger (meer events).
- csi.GENX320_BIAS_FO: int¶
Pixel-laagdoorlaat-afsnijfrequentie — maakt een afweging tussen pixelbandbreedte (snelheid/latentie) en achtergrondruisactiviteit. Hogere waarde = snellere pixelrespons, meer ruis.
- csi.GENX320_BIAS_HPF: int¶
Pixel-hoogdoorlaat-afsnijfrequentie — verwerpt langzame helderheidsveranderingen. Hogere waarde = langzamere veranderingen worden uitgefilterd (alleen snelle overgangen worden geregistreerd).
- csi.GENX320_BIAS_REFR: int¶
Refractaire periode van de pixel — dode tijd nadat een pixel een event uitstuurt waarin deze niet opnieuw kan afgaan. Hogere waarde = langere dode tijd, minder events van een drukke pixel.
- csi.IOCTL_GENX320_SET_AFK: int¶
Stelt het GENX320-anti-flikkerfilter (AFK) in, dat events verwerpt van pixels die op een periodieke frequentieband schakelen (TL-verlichting, LED-aangestuurde displays, enz.). Geef
enabledoor (1 om in te schakelen, 0 om uit te schakelen) en, bij het inschakelen, de bandranden in hertz:(enable, freq_low_hz, freq_high_hz). ZieCSI.ioctl.
- csi.IOCTL_GENX320_SET_STC: int¶
Stelt de modus van het GENX320 spatio-temporele contrastfilter (STC) in. Geef een
GENX320_STC_*-constante door (csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL) gevolgd door de drempelwaarde(n) die de modus vereist (in milliseconden). ZieCSI.ioctl.
- csi.GENX320_STC_ONLY: int¶
Behoudt de tweede event van een burst; laat de eerste event en alle latere events vallen. Neemt één parameter,
stc_thresholdin milliseconden — events binnen dat venster van een eerdere event op dezelfde pixel worden beschouwd als onderdeel van dezelfde burst.
- csi.GENX320_STC_TRAIL_ONLY: int¶
Behoudt de eerste event van een burst; laat volgende events op dezelfde pixel vallen totdat
trail_thresholdis verstreken. Neemt één parameter,trail_thresholdin milliseconden.
- csi.GENX320_STC_TRAIL: int¶
Behoudt de eerste event van een burst plus volgende flanken — combineert
csi.GENX320_STC_ONLYencsi.GENX320_STC_TRAIL_ONLY. Neemt twee parameters,stc_thresholdentrail_threshold(beide ms); de sensor vereist dat de twee binnen ongeveer een 13:1-verhouding blijven.
- csi.IOCTL_GENX320_SET_MODE: int¶
Stelt de bedrijfsmodus van de GENX320 in. Geef
csi.GENX320_MODE_HISTOdoor voor het on-chip event-histogram (de cam gedraagt zich als een gewone grijswaardencamera op de geconfigureerde framesnelheid) ofcsi.GENX320_MODE_EVENTgevolgd door de lengte van de rij-as van de event-ndarray(een macht van twee tussen 1024 en 65536) voor ruwe event-streaming. ZieCSI.ioctl.
- csi.GENX320_MODE_HISTO: int¶
Histogrammodus — events worden on-chip geaccumuleerd in per-pixel bins en gerapporteerd als een 320x320-grijswaardenframe op de geconfigureerde snelheid (~20-350 FPS). De cam ziet eruit als een gewone camera, dus alle standaard beeldverwerkingsroutines werken rechtstreeks.
- csi.GENX320_MODE_EVENT: int¶
Event-modus — omzeilt het on-chip histogram en streamt ruwe events naar een numpy-
ndarraymet microsecondetijdstempels, voor applicaties die volledige temporele detaillering nodig hebben in plaats van een vooraf gebind frame.
- csi.IOCTL_GENX320_READ_EVENTS: int¶
Leest ruwe events in een uint16-
ndarrayvan vorm(EVT_res, 6)(metEVT_resdie overeenkomt met de buffergrootte doorgegeven aancsi.IOCTL_GENX320_SET_MODE). De kolommen zijn[0]eventtype (csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]secondentijdstempel,[2]milliseconden,[3]microseconden,[4]X-coördinaat (0-319),[5]Y-coördinaat (0-319). Retourneert het aantal events dat in de buffer is geschreven, waarbij oudere rijen voorbij dat aantal onaangeroerd blijven. ZieCSI.ioctl.
- csi.IOCTL_GENX320_CALIBRATE: int¶
Schakelt automatisch hot pixels uit — pixels die ten onrechte afgaan zelfs bij een statische scène. De driver bouwt een 320x320 per-pixel hit-telling op, berekent het gemiddelde en de standaarddeviatie, en schakelt elke pixel uit waarvan de telling
mean + sigma * stddevoverschrijdt. Geef een event-aantalbudget door (events om te tellen voordat statistieken worden berekend — hoger = betrouwbaardere schatting, langzamer; ~10000 is een goede standaardwaarde) en een sigma-float (lager = agressiever, ~0.5 standaard). Retourneert het aantal uitgeschakelde pixels. Richt de cam eerst op een statische scène zodat bewegingsgedreven events niet worden meegeteld tegen pixels die eigenlijk prima zijn. ZieCSI.ioctl.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
Retourneert een ruwe event-frame
image.Imagevan de GENX320, met de events nog in de native gepakte codering van de chip — handig als je de ruwe stream wilt doorsturen naar een pc voor offline decodering in plaats van deze op de cam te verwerken. ZieCSI.ioctl.
- csi.PIX_OFF_EVENT: int¶
GENX320-eventtype (kolom
[0]) — een pixel detecteerde een helderheidsafname (de negatieve-contrastdrempelwaarde werd overschreden). Kolommen[4]/[5]bevatten de X/Y van de pixel.
- csi.PIX_ON_EVENT: int¶
GENX320-eventtype (kolom
[0]) — een pixel detecteerde een helderheidstoename (de positieve-contrastdrempelwaarde werd overschreden). Kolommen[4]/[5]bevatten de X/Y van de pixel.
- csi.RST_TRIGGER_RISING: int¶
GENX320-eventtype (kolom
[0]) — pixel-reset-trigger, stijgende flank. X/Y worden niet gebruikt. Wordt momenteel niet door de firmware gegenereerd.
- csi.RST_TRIGGER_FALLING: int¶
GENX320-eventtype (kolom
[0]) — pixel-reset-trigger, dalende flank. X/Y worden niet gebruikt. Wordt momenteel niet door de firmware gegenereerd.
- csi.EXT_TRIGGER_RISING: int¶
GENX320-eventtype (kolom
[0]) — de externe triggerpin van de sensor zag een stijgende flank. De externe triggeringang van de GENX320 is bedraad naar de frame-sync-lijn van de camera, die ook is doorverbonden naar P10 op de processor en het pinheader. X/Y worden niet gebruikt.
- csi.EXT_TRIGGER_FALLING: int¶
GENX320-eventtype (kolom
[0]) — de externe triggerpin van de sensor zag een dalende flank. De externe triggeringang van de GENX320 is bedraad naar de frame-sync-lijn van de camera, die ook is doorverbonden naar P10 op de processor en het pinheader. X/Y worden niet gebruikt.