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.