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 cid zoals csi.LEPTON door te geven om een FLIR Lepton-sensormodule te selecteren. Als cid -1 is, wordt de primaire sensor geselecteerd (doorgaans een kleurcameramodule op borden met meerdere sensoren).

Als delays False is, worden alle wachttijden voor stabilisatie in de csi-driver uitgeschakeld. Standaard wacht de sensordriver na een reset / moduswijziging om te voorkomen dat corrupte frames door CSI.snapshot worden geretourneerd. Door vertragingen uit te schakelen kun je updates bundelen en één enkele vertraging aan het einde toepassen voordat je CSI.snapshot aanroept.

Als fflush False is, wordt het automatisch leegmaken van de framebuffer dat in CSI.framebuffers wordt genoemd, uitgeschakeld. Hiermee wordt elke tijdslimiet op frames in de framebuffer-fifo opgeheven.

stream bepaalt of deze CSI de streambron is die naar de IDE wordt verzonden. Als None (standaard), wordt de CSI alleen de streambron als het de primaire (niet-hulp) sensor is. Geef True door 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 hard True is. hard moet 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 enable True is. Anders wordt deze weer gewekt.

flush() None

Kopieert de huidige framebufferinhoud naar de IDE-preview. Roep dit aan na de laatste CSI.snapshot als 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 time en/of frames wordt doorgegeven, blokkeert snapshot gedurende zoveel time milliseconden en/of frames die van de camera zijn vastgelegd. Beide argumenten kunnen tegelijkertijd worden gebruikt. Nadat time en/of frames is verstreken, retourneert snapshot None.

blocking kan False zijn om niet-blokkerend gedrag in te schakelen, waardoor snapshot None retourneert wanneer de volgende afbeelding van de camera niet klaar is in plaats van te wachten.

image kan een ander image.Image-object zijn dat wordt bijgewerkt met de nieuwe afbeelding die van de camera is vastgelegd, in plaats van een nieuw image.Image-object te retourneren. De vorige afbeeldingsinhoud wordt overschreven via een diepe kopie.

Als CSI.auto_rotation is ingeschakeld, retourneert deze methode een reeds geroteerde image.Image.

width() int

Retourneert de breedte van de sensorresolutie.

height() int

Retourneert de hoogte van de sensorresolutie.

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, of csi.SOFTCSI.

readable() bool

Retourneert True als er een afbeelding klaarstaat om door CSI.snapshot te 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, of csi.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. Wanneer CSI.snapshot wordt 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.framerate werkt 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, zal CSI.framerate ook de framesnelheid van de camerasensor intern verlagen om energie te besparen en de beeldkwaliteit te verbeteren door de sensorbelichting te verhogen. CSI.framerate kan op sommige camera’s conflicteren met CSI.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. roi is 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 True bij succes en False bij mislukking.

brightness(brightness: int) bool

Stelt de helderheid van de camera-afbeelding in.

Retourneert True bij succes en False bij mislukking.

contrast(contrast: int) bool

Stelt het contrast van de camera-afbeelding in.

Retourneert True bij succes en False bij mislukking.

saturation(saturation: int) bool

Stelt de verzadiging van de camera-afbeelding in.

Retourneert True bij succes en False bij mislukking.

quality(quality: int) bool

Stelt de JPEG-compressiekwaliteit van de camera-afbeelding in. 0 - 100.

Retourneert True bij succes en False bij mislukking.

Notitie

Alleen voor de OV2640/OV5640-camera’s.

colorbar(enable: bool) bool

Schakelt de kleurbalkmodus in (True) of uit (False). Standaard uit.

Retourneert True bij succes en False bij mislukking.

auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None

enable schakelt automatische versterkingsregeling in (True) of uit (False). De camera start op met automatische versterkingsregeling aan.

Als enable False is, kun je met gain_db een vaste versterking in decibel instellen.

Als enable True is, kun je met gain_db_ceiling het maximale versterkingsplafond in decibel instellen voor het automatische versterkingsregelingsalgoritme.

Notitie

Je moet ook de witbalans uitschakelen als je kleuren wilt volgen.

gain_db() float

Retourneert de huidige versterkingswaarde van de camera in decibel.

auto_exposure(enable: bool, exposure_us: int = -1) None

enable schakelt automatische belichtingsregeling in (True) of uit (False). De camera start op met automatische belichtingsregeling aan.

Als enable False is, kun je met exposure_us een 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.

exposure_us() int

Retourneert de huidige belichtingswaarde van de camera in microseconden.

auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None

enable schakelt automatische witbalans in (True) of uit (False). De camera start op met automatische witbalans aan.

Als enable False is, kun je met rgb_gain_db een 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.

enable geef True of False door om BLC in of uit te schakelen. Doorgaans wil je dit altijd aan hebben.

regs als uitgeschakeld, kun je de BLC-registerwaarden handmatig instellen op basis van een eerdere aanroep van CSI.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 imu heeft 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, of CSI.window worden aangeroepen.

count van 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 waar count buffers in de wachtrij worden geplaatst — handig voor video-opname naar een SD-kaart. Bij frameverlies worden alle framebuffers behalve de actieve gewist, zodat CSI.snapshot altijd 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.NORMAL of csi.NEGATIVE).

Retourneert True bij succes en False bij mislukking.

lens_correction(enable: bool, radi: int, coef: int) bool

enable True om in te schakelen, False om uit te schakelen. radi geheeltallige straal van te corrigeren pixels. coef mate van correctie.

Retourneert True bij succes en False bij mislukking.

vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None

Registreert callback cb om te worden uitgevoerd (in interrupt-context) telkens wanneer de cameramodule een nieuw frame genereert (maar voordat het frame is ontvangen).

cb neemt éé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 cb om te worden uitgevoerd (in interrupt-context) telkens wanneer de cameramodule een nieuw frame genereert en het frame klaar is om via CSI.snapshot te worden gelezen.

cb neemt geen argumenten. Gebruik dit om het later lezen van een frame in te plannen met micropython.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. request is een van de IOCTL_*-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, instrueer framesize() 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_ms is 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. cmd is 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_id is de 16-bits attribuut-id; payload is een bytes/bytearray waarvan de lengte een veelvoud van 16 bits moet zijn.

ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)

Leest een Lepton SDK-attribuut. attr_id is de 16-bits attribuut-id; words is het aantal te lezen 16-bits woorden. Retourneert een bytearray.

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=True schakelt directe temperatuuruitvoer in. De optionele high_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..255 wanneer 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 (0255).

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. preset is een van de GENX320_BIASES_*-constanten.

ioctl(IOCTL_GENX320_SET_BIAS, bias, value)

Stelt een enkele bias in. bias is een van de GENX320_BIAS_*-constanten; value is 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. enable is 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. mode is een van de GENX320_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. mode is een van de GENX320_MODE_*-constanten. Voor de event-modus is evt_res de lengte van de rij-as van de event-buffer die aan IOCTL_GENX320_READ_EVENTS wordt doorgegeven.

ioctl(IOCTL_GENX320_READ_EVENTS, buf)

Leest events in buf, een uint16 ndarray van vorm (EVT_res, 6) waarbij EVT_res een 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.Image die het ruwe event-frame van de GENX320 bevat.

ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)

Schakelt pixels uit waarvan de ruis meer dan sigma standaarddeviaties van de normale verdeling afwijkt. iterations is 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, of image.PALETTE_EVT_LIGHT.

Retourneert de huidige instelling als deze zonder argumenten wordt aangeroepen.

__write_reg(address: int, value: int) None

Schrijft value naar het cameraregister op address.

Notitie

Zie het datablad van de camera voor registerinformatie.

__read_reg(address: int) int

Leest het cameraregister op address.

Notitie

Zie het datablad van de camera voor registerinformatie.

Functies

csi.devices() List[int]

Retourneert een lijst van de gedetecteerde sensorchip-ID’s.

Constanten

csi.BINARY: int

BINARY (bitmap) pixelformaat. Elke pixel is 1-bit. Handig voor maskeropslag; kan worden gebruikt met image.Image().

csi.GRAYSCALE: int

GRAYSCALE pixelformaat (Y van YUV422). Elke pixel is 8-bits.

csi.RGB565: int

RGB565 pixelformaat. Elke pixel is 16-bits (5-bits rood, 6-bits groen, 5-bits blauw).

csi.BAYER: int

RAW BAYER afbeeldingspixelformaat.

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.quality om de JPEG-kwaliteit te regelen. Werkt alleen voor de OV2640/OV5640-camera’s.

csi.OV2640: int

CSI.cid retourneert dit voor de OV2640-camera.

csi.OV5640: int

CSI.cid retourneert dit voor de OV5640-camera.

csi.OV7670: int

CSI.cid retourneert dit voor de OV7670-camera.

csi.OV7690: int

CSI.cid retourneert dit voor de OV7690-camera.

csi.OV7725: int

CSI.cid retourneert dit voor de OV7725-camera.

csi.OV9650: int

CSI.cid retourneert dit voor de OV9650-camera.

csi.MT9V022: int

CSI.cid retourneert dit voor de MT9V022-camera.

csi.MT9V024: int

CSI.cid retourneert dit voor de MT9V024-camera.

csi.MT9V032: int

CSI.cid retourneert dit voor de MT9V032-camera.

csi.MT9V034: int

CSI.cid retourneert dit voor de MT9V034-camera.

csi.MT9M114: int

CSI.cid retourneert dit voor de MT9M114-camera.

csi.BOSON320: int

CSI.cid retourneert dit voor de BOSON 320x256-camera.

csi.BOSON640: int

CSI.cid retourneert dit voor de BOSON 640x512-camera.

csi.LEPTON: int

CSI.cid retourneert dit voor de LEPTON1/2/3-camera’s.

csi.HM01B0: int

CSI.cid retourneert dit voor de HM01B0-camera.

csi.HM0360: int

CSI.cid retourneert dit voor de HM0360-camera.

csi.GC2145: int

CSI.cid retourneert dit voor de GC2145-camera.

csi.GENX320ES: int

CSI.cid retourneert dit voor de GENX320-camera (engineering sample).

csi.GENX320: int

CSI.cid retourneert dit voor de GENX320-camera.

csi.PAG7920: int

CSI.cid retourneert dit voor de PAG7920-camera.

csi.PAG7936: int

CSI.cid retourneert dit voor de PAG7936-camera.

csi.PAJ6100: int

CSI.cid retourneert dit voor de PAJ6100-camera.

csi.FROGEYE2020: int

CSI.cid retourneert dit voor de FROGEYE2020-camera.

csi.SOFTCSI: int

CSI.cid retourneert dit voor de software-CSI-camera.

csi.NORMAL: int

Normale modus voor CSI.special_effect.

csi.NEGATIVE: int

Negatieve modus voor CSI.special_effect.

csi.QCIF: int

176x144-resolutie voor de camerasensor.

csi.CIF: int

352x288-resolutie voor de camerasensor.

csi.QSIF: int

176x120-resolutie voor de camerasensor.

csi.SIF: int

352x240-resolutie voor de camerasensor.

csi.QQQVGA: int

80x60-resolutie voor de camerasensor.

csi.QQVGA: int

160x120-resolutie voor de camerasensor.

csi.QVGA: int

320x240-resolutie voor de camerasensor.

csi.VGA: int

640x480-resolutie voor de camerasensor.

csi.HQVGA: int

240x160-resolutie voor de camerasensor.

csi.HVGA: int

480x320-resolutie voor de camerasensor.

csi.WVGA: int

720x480-resolutie voor de MT9V034-camerasensor.

csi.WVGA2: int

752x480-resolutie voor de MT9V034-camerasensor.

csi.SVGA: int

800x600-resolutie voor de camerasensor.

csi.XGA: int

1024x768-resolutie voor de camerasensor.

csi.WXGA: int

1280x768-resolutie voor de MT9M114-camerasensor.

csi.SXGA: int

1280x1024-resolutie voor de camerasensor. Werkt alleen voor de OV2640/OV5640-camera’s.

csi.SXGAM: int

1280x960-resolutie voor de MT9M114-camerasensor.

csi.UXGA: int

1600x1200-resolutie voor de camerasensor. Werkt alleen voor de OV2640/OV5640-camera’s.

csi.HD: int

1280x720-resolutie voor de camerasensor.

csi.FHD: int

1920x1080-resolutie voor de camerasensor. Werkt alleen voor de OV5640-camera.

csi.QHD: int

2560x1440-resolutie voor de camerasensor. Werkt alleen voor de OV5640-camera.

csi.QXGA: int

2048x1536-resolutie voor de camerasensor. Werkt alleen voor de OV5640-camera.

csi.WQXGA: int

2560x1600-resolutie voor de camerasensor. Werkt alleen voor de OV5640-camera.

csi.WQXGA2: int

2592x1944-resolutie voor de camerasensor. Werkt alleen voor de OV5640-camera.

csi.IOCTL_SET_READOUT_WINDOW: int

Stelt het uitleesvenster in. Zie CSI.ioctl.

csi.IOCTL_GET_READOUT_WINDOW: int

Haalt het uitleesvenster op. Zie CSI.ioctl.

csi.IOCTL_SET_TRIGGERED_MODE: int

Stelt de getriggerde modus in voor de MT9V034. Zie CSI.ioctl.

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.framesize in om te optimaliseren voor gezichtsveld boven FPS. Zie CSI.ioctl.

csi.IOCTL_GET_FOV_WIDE: int

Retourneert of CSI.framesize optimaliseert voor gezichtsveld boven FPS. Zie CSI.ioctl.

csi.IOCTL_TRIGGER_AUTO_FOCUS: int

Triggert autofocus op de OV5640 FPC-cameramodule. Zie CSI.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_GET_NIGHT_MODE: int

Retourneert of de nachtmodus is ingeschakeld. 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_WINDOW: int

Stelt het bewegingsdetectievenster op de HM01B0 in. Zie CSI.ioctl.

csi.IOCTL_HIMAX_MD_THRESHOLD: int

Stelt de bewegingsdetectiedrempelwaarde op de HM01B0 in. Zie CSI.ioctl.

csi.IOCTL_HIMAX_MD_CLEAR: int

Wist de bewegingsdetectie-interrupt op de HM01B0. Zie CSI.ioctl.

csi.IOCTL_HIMAX_OSC_ENABLE: int

Bestuurt de interne oscillator op de HM01B0. Zie CSI.ioctl.

csi.IOCTL_GET_RGB_STATS: int

Retourneert de RGB-statistieken van de camerasensor. Zie CSI.ioctl.

csi.IOCTL_GENX320_SET_BIASES: int

Stelt de biases van de GENX320-sensor in op een van de GENX320_BIASES_*-presets. Zie CSI.ioctl. Na CSI.reset past de driver csi.GENX320_BIASES_LOW_NOISE toe, niet csi.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, of csi.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. Zie CSI.ioctl.

csi.GENX320_BIAS_DIFF_OFF: int

Negatieve comparator-contrastdrempelwaarde — bepaalt hoeveel een pixel moet verdonkeren voordat een csi.PIX_OFF_EVENT afgaat. 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_EVENT afgaat. 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 enable door (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). Zie CSI.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). Zie CSI.ioctl.

csi.GENX320_STC_DISABLE: int

Schakelt het GENX320 STC/trail-filter uit — elke event gaat erdoor.

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_threshold in 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_threshold is verstreken. Neemt één parameter, trail_threshold in milliseconden.

csi.GENX320_STC_TRAIL: int

Behoudt de eerste event van een burst plus volgende flanken — combineert csi.GENX320_STC_ONLY en csi.GENX320_STC_TRAIL_ONLY. Neemt twee parameters, stc_threshold en trail_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_HISTO door voor het on-chip event-histogram (de cam gedraagt zich als een gewone grijswaardencamera op de geconfigureerde framesnelheid) of csi.GENX320_MODE_EVENT gevolgd door de lengte van de rij-as van de event-ndarray (een macht van twee tussen 1024 en 65536) voor ruwe event-streaming. Zie CSI.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-ndarray met 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-ndarray van vorm (EVT_res, 6) (met EVT_res die overeenkomt met de buffergrootte doorgegeven aan csi.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. Zie CSI.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 * stddev overschrijdt. 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. Zie CSI.ioctl.

csi.IOCTL_GENX320_READ_EVENTS_RAW: int

Retourneert een ruwe event-frame image.Image van 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. Zie CSI.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.