csi — Kamerasensoren

Das Modul csi ist die moderne, objektorientierte Schnittstelle zum bzw. zu den Kamerasensor(en) einer OpenMV Cam. Jeder physische Sensor wird durch eine CSI-Instanz repräsentiert, sodass die multispektralen Imager-Boards, die einen Farbsensor mit einem Thermo- oder Ereignissensor kombinieren, jeden einzeln ansteuern können, indem dem Konstruktor eine andere cid übergeben wird. Kameras mit nur einem Sensor instanziieren einfach eine einzige CSI.

Ein CSI-Objekt besitzt die vollständige Sensorkonfiguration – Pixelformat, Framesize/Fenster, Belichtung/Verstärkung/Weißabgleich, Hardware-Spiegelung und -Kippung, Farbbalken-Testmuster, Bildraten-Takt, ROI für die automatische Belichtung und chipspezifische ioctl-Befehle. Einzelbilder werden mit CSI.snapshot() aufgenommen, was ein image.Image zurückgibt, das vom Framebuffer gestützt wird.

Dieses Modul löst das veraltete sensor-Modul ab (welches dieselbe Funktionalität als modulweite Funktionen bot, die an einen einzigen verborgenen Sensor gebunden waren). Neuer Code sollte CSI verwenden.

Anwendungsbeispiel:

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()

Verwendung mit Asyncio

Die blockierende CSI.snapshot()-Schleife oben kooperiert nicht mit der asyncio-Ereignisschleife – während snapshot auf das nächste Einzelbild wartet, ist jede andere Coroutine im Programm eingefroren. Damit eine Aufnahmeschleife mit anderer nebenläufiger Arbeit (einem UART-Client, einem Tasten-Überwacher, einer Netzwerkaufgabe) koexistieren kann, umhülle CSI mit einem kleinen Adapter, der snapshot in eine await-fähige Coroutine verwandelt, indem er snapshot(blocking=False) abfragt und zwischen den Prüfungen die Kontrolle an die Ereignisschleife abgibt:

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__ leitet jedes andere Attribut (reset, pixformat, framesize, die Sensor-Stellgrößen) an das zugrunde liegende CSI weiter, sodass der Wrapper ein direkter Ersatz ist. Der erste nicht blockierende Aufruf startet außerdem die DMA-Aufnahme der Kamera, falls sie noch nicht lief, sodass kein zusätzliches Bootstrapping nötig ist.

Eine Aufnahmeschleife fügt sich dann als nur eine weitere Coroutine in ein größeres asyncio-Programm ein:

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())

Die Einstellung framebuffers ist auch in dieser Form noch von Bedeutung – der Einzelpuffer-Modus lässt snapshot(blocking=False) None zurückgeben, bis das nächste Einzelbild aufgenommen ist, während Doppel- oder Dreifachpufferung dies ausgleicht, sodass der Wrapper bei der ersten Abfrage in der Regel ein gepuffertes Einzelbild vorfindet. Im AsyncCSI-Abschlussbeispiel des asyncio-Tutorials findest du die vollständige Erläuterung.

Klasse CSI – Kamerasensor-Schnittstelle

Die Klasse CSI wird zur Steuerung eines Kamerasensors verwendet.

class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)

Erstellt ein Objekt zur Kommunikation mit einem Kamerasensor. Auf Boards mit mehreren Sensoren kann das jeweilige CSI-Objekt durch Übergabe einer cid wie csi.LEPTON ausgewählt werden, um ein FLIR-Lepton-Sensormodul auszuwählen. Ist cid gleich -1, wird der Primärsensor ausgewählt (auf Boards mit mehreren Sensoren üblicherweise ein Farbkameramodul).

Ist delays gleich False, werden alle Einschwingzeit-Verzögerungen im csi-Treiber deaktiviert. Standardmäßig verzögert der Sensortreiber nach einem Reset bzw. Moduswechsel, um zu verhindern, dass CSI.snapshot beschädigte Einzelbilder zurückgibt. Das Deaktivieren der Verzögerungen erlaubt es dir, Aktualisierungen zu bündeln und am Ende eine einzige Verzögerung anzuwenden, bevor CSI.snapshot aufgerufen wird.

Ist fflush gleich False, wird das in CSI.framebuffers erwähnte automatische Leeren des Framebuffers deaktiviert. Dadurch entfällt jegliches Zeitlimit für Einzelbilder im Framebuffer-FIFO.

stream wählt aus, ob dieses CSI die an die IDE gesendete Stream-Quelle ist. Bei None (Standard) wird das CSI nur dann zur Stream-Quelle, wenn es der primäre (nicht-zusätzliche) Sensor ist. Übergib True, um dieses CSI zur Stream-Quelle zu erzwingen, oder einen beliebigen falschen Wert, um die bestehende Stream-Quelle unverändert zu lassen.

Methoden

reset(hard: bool = True) None

Initialisiert den Kamerasensor. Führt einen Hardware-Reset durch, indem das RESET-Signal-GPIO zum Kameramodul umgeschaltet wird, falls hard gleich True ist. hard sollte auf false gesetzt werden, wenn zusätzliche Kamerasensoren zurückgesetzt werden, die sich dasselbe RESET-Signal-GPIO mit dem Primärmodul teilen.

shutdown(enable: bool) None

Versetzt die Kamera in einen Modus mit geringerem Energieverbrauch als Schlaf (aber die Kamera muss beim Aufwecken zurückgesetzt werden).

sleep(enable: bool) None

Versetzt die Kamera in den Schlafmodus, wenn enable True ist. Andernfalls weckt sie sie wieder auf.

flush() None

Kopiert den aktuellen Inhalt des Framebuffers in die IDE-Vorschau. Rufe dies nach dem letzten CSI.snapshot auf, wenn das Skript beendet wird, damit die IDE das letzte Einzelbild anzeigt.

snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None

Nimmt mit der Kamera ein Bild auf und gibt ein image.Image-Objekt zurück.

Werden time und/oder frames übergeben, blockiert snapshot für so viele time-Millisekunden und/oder so viele von der Kamera aufgenommene frames. Beide Argumente können gleichzeitig verwendet werden. Nachdem time und/oder frames verstrichen sind, gibt snapshot None zurück.

blocking kann False sein, um nicht blockierendes Verhalten zu aktivieren, wodurch snapshot None zurückgibt, wenn das nächste Bild der Kamera nicht bereit ist, anstatt zu warten.

image kann ein anderes image.Image-Objekt sein, das mit dem neu von der Kamera aufgenommenen Bild aktualisiert wird, anstatt ein neues image.Image-Objekt zurückzugeben. Der vorherige Bildinhalt wird per Deep Copy überschrieben.

Ist CSI.auto_rotation aktiviert, gibt diese Methode ein bereits rotiertes image.Image zurück.

width() int

Gibt die Breite der Sensorauflösung zurück.

height() int

Gibt die Höhe der Sensorauflösung zurück.

cid() int

Gibt die Chip-ID des Kameramoduls zurück. Vergleiche mit einer von 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 oder csi.SOFTCSI.

readable() bool

Gibt True zurück, wenn ein Bild bereit ist, von CSI.snapshot zurückgegeben zu werden, sodass ein Aufruf von snapshot nicht blockiert.

pixformat(pixformat: int | None = None) int | None

Setzt das Pixelformat des Kameramoduls auf eines von csi.GRAYSCALE, csi.RGB565, csi.BAYER, csi.YUV422 oder csi.JPEG (nur bei der OV2640/OV5640).

Gibt das aktuelle pixformat zurück, wenn ohne Argumente aufgerufen.

framesize(framesize: int | Tuple[int, int] | None = None) int | None

Setzt die Framesize des Kameramoduls auf eine der Größenkonstanten (z. B. csi.QVGA, csi.VGA, csi.HD usw. — siehe den Abschnitt über Konstanten).

Alternativ kannst du eine benutzerdefinierte Framesize als (w, h)-Tupel übergeben. Beim Aufruf von CSI.snapshot wird die benutzerdefinierte Framesize gegen die DMA-Regeln geprüft. Im Allgemeinen müssen Framesizes ein Vielfaches von 8 Pixeln und/oder 16 Bytes sein.

Gibt die aktuelle framesize zurück, wenn ohne Argumente aufgerufen.

framerate(rate: int | None = None) int | None

Setzt die Bildrate des Kameramoduls in Hz.

Gibt die aktuelle framerate zurück, wenn ohne Argumente aufgerufen.

Bemerkung

CSI.framerate funktioniert, indem vom Kameramodul empfangene Einzelbilder verworfen werden, um die Bildrate auf oder unter der angegebenen Rate zu halten. Standardmäßig läuft die Kamera mit der maximalen Bildrate. Sofern für den jeweiligen Kamerasensor implementiert, reduziert CSI.framerate auch die Bildrate des Kamerasensors intern, um Energie zu sparen und die Bildqualität durch eine längere Sensorbelichtung zu verbessern. CSI.framerate kann bei manchen Kameras mit CSI.auto_exposure in Konflikt geraten.

window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None

Setzt die Auflösung der Kamera auf einen Teilbereich der aktuellen Auflösung. roi ist ein (x, y, w, h)-Tupel. Du kannst auch (w, h) übergeben, dann wird das Fenster zentriert.

Gibt das aktuelle (x, y, w, h)-Tupel zurück, wenn ohne Argumente aufgerufen.

gainceiling(gainceiling: int) bool

Setzt das Verstärkungslimit (gainceiling) des Kamerabildes auf einen von 2, 4, 8, 16, 32, 64 oder 128.

Gibt bei Erfolg True und bei Fehlschlag False zurück.

brightness(brightness: int) bool

Setzt die Helligkeit des Kamerabildes.

Gibt bei Erfolg True und bei Fehlschlag False zurück.

contrast(contrast: int) bool

Setzt den Kontrast des Kamerabildes.

Gibt bei Erfolg True und bei Fehlschlag False zurück.

saturation(saturation: int) bool

Setzt die Sättigung des Kamerabildes.

Gibt bei Erfolg True und bei Fehlschlag False zurück.

quality(quality: int) bool

Setzt die JPEG-Komprimierungsqualität des Kamerabildes. 0 - 100.

Gibt bei Erfolg True und bei Fehlschlag False zurück.

Bemerkung

Nur für die Kameras OV2640/OV5640.

colorbar(enable: bool) bool

Schaltet den Farbbalken-Modus ein (True) oder aus (False). Standardmäßig aus.

Gibt bei Erfolg True und bei Fehlschlag False zurück.

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

enable schaltet die automatische Verstärkungsregelung ein (True) oder aus (False). Die Kamera startet mit eingeschalteter automatischer Verstärkungsregelung.

Ist enable gleich False, kannst du mit gain_db eine feste Verstärkung in Dezibel setzen.

Ist enable gleich True, kannst du mit gain_db_ceiling das maximale Verstärkungslimit in Dezibel für den Algorithmus der automatischen Verstärkungsregelung setzen.

Bemerkung

Du musst auch den Weißabgleich ausschalten, wenn du Farben verfolgen möchtest.

gain_db() float

Gibt den aktuellen Verstärkungswert der Kamera in Dezibel zurück.

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

enable schaltet die automatische Belichtungsregelung ein (True) oder aus (False). Die Kamera startet mit eingeschalteter automatischer Belichtungsregelung.

Ist enable gleich False, kannst du mit exposure_us eine feste Belichtungszeit in Mikrosekunden setzen.

Bemerkung

Automatische Belichtungsalgorithmen von Kameras sind ziemlich konservativ, was die Stärke der Anpassung des Belichtungswerts betrifft, und vermeiden im Allgemeinen, den Belichtungswert stark zu verändern. Stattdessen verändern sie den Verstärkungswert stark, um mit wechselnden Lichtverhältnissen umzugehen.

exposure_us() int

Gibt den aktuellen Belichtungswert der Kamera in Mikrosekunden zurück.

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

enable schaltet den automatischen Weißabgleich ein (True) oder aus (False). Die Kamera startet mit eingeschaltetem automatischem Weißabgleich.

Ist enable gleich False, kannst du mit rgb_gain_db jeweils eine feste Verstärkung in Dezibel für den roten, grünen und blauen Kanal setzen.

Bemerkung

Du musst auch die Verstärkungsregelung ausschalten, wenn du Farben verfolgen möchtest.

rgb_gain_db() Tuple[float, float, float]

Gibt ein Tupel (r, g, b) der aktuellen Verstärkungswerte für Rot, Grün und Blau der Kamera in Dezibel zurück.

auto_blc(enable: bool, regs: List[int] | None = None) None

Setzt die automatische Schwarzpegel-Kalibrierung (BLC) an der Kamera.

enable übergib True oder False, um BLC ein- oder auszuschalten. In der Regel möchtest du dies immer eingeschaltet haben.

regs ist es deaktiviert, kannst du die BLC-Registerwerte aus einem vorherigen Aufruf von CSI.blc_regs manuell setzen.

blc_regs() List[int]

Gibt die BLC-Register des Sensors als Liste von Ganzzahlen zurück. Zur Verwendung mit CSI.auto_blc.

hmirror(enable: bool | None = None) bool | None

Schaltet den horizontalen Spiegelmodus ein (True) oder aus (False). Standardmäßig aus.

Gibt die aktuelle Einstellung zurück, wenn ohne Argumente aufgerufen.

vflip(enable: bool | None = None) bool | None

Schaltet den vertikalen Kippmodus ein (True) oder aus (False). Standardmäßig aus.

Gibt die aktuelle Einstellung zurück, wenn ohne Argumente aufgerufen.

transpose(enable: bool | None = None) bool | None

Schaltet den Transponiermodus ein (True) oder aus (False). Standardmäßig aus.

  • vflip=False, hmirror=False, transpose=False -> 0 Grad Drehung

  • vflip=True, hmirror=False, transpose=True -> 90 Grad Drehung

  • vflip=True, hmirror=True, transpose=False -> 180 Grad Drehung

  • vflip=False, hmirror=True, transpose=True -> 270 Grad Drehung

Gibt die aktuelle Einstellung zurück, wenn ohne Argumente aufgerufen.

auto_rotation(enable: bool | None = None) bool | None

Schaltet den automatischen Rotationsmodus ein (True) oder aus (False). Standardmäßig aus.

Gibt die aktuelle Einstellung zurück, wenn ohne Argumente aufgerufen.

Bemerkung

Diese Methode funktioniert nur, wenn die OpenMV Cam eine imu installiert hat, und wird automatisch aktiviert.

framebuffers(count: int | None = None) int | None

Setzt die Anzahl der Framebuffer, die zum Empfang von Bilddaten verwendet werden. Standardmäßig versucht die OpenMV Cam, die maximale Anzahl an Framebuffern zu allozieren, die sie kann. Eine Neuallozierung erfolgt, sobald CSI.pixformat, CSI.framesize oder CSI.window aufgerufen werden.

Ein count von 1 (Einzelpuffer), 2 (Doppelpuffer) oder 3 (Dreifachpuffer) wählt den entsprechenden Aufnahmemodus. Übergib 4 oder höher, um den Treiber in den Video-FIFO-Modus zu versetzen, in dem count Puffer in eine Warteschlange eingereiht werden — nützlich für die Videoaufzeichnung auf eine SD-Karte. Bei einem Frame-Drop werden alle Framebuffer außer dem aktiven gelöscht, sodass CSI.snapshot stets ein aktuelles Einzelbild zurückgibt.

Gibt den aktuellen count zurück, wenn ohne Argumente aufgerufen.

special_effect(effect: int) bool

Setzt den speziellen Digitaleffekt (einen von csi.NORMAL oder csi.NEGATIVE).

Gibt bei Erfolg True und bei Fehlschlag False zurück.

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

enable True zum Aktivieren, False zum Deaktivieren. radi ganzzahliger Radius der zu korrigierenden Pixel. coef Stärke der Korrektur.

Gibt bei Erfolg True und bei Fehlschlag False zurück.

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

Registriert den Callback cb, der (im Interrupt-Kontext) ausgeführt wird, sobald das Kameramodul ein neues Einzelbild erzeugt (aber bevor das Einzelbild empfangen wird).

cb nimmt ein Argument entgegen und erhält den aktuellen Zustand des vsync-Pins nach dessen Änderung.

Gibt den registrierten Callback zurück, wenn ohne Argumente aufgerufen. Übergib einen beliebigen nicht aufrufbaren Wert, um den Callback zu löschen.

frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None

Registriert den Callback cb, der (im Interrupt-Kontext) ausgeführt wird, sobald das Kameramodul ein neues Einzelbild erzeugt und das Einzelbild bereit ist, über CSI.snapshot gelesen zu werden.

cb nimmt keine Argumente entgegen. Verwende dies, um das spätere Lesen eines Einzelbilds mit micropython.schedule() einzuplanen.

Gibt den registrierten Callback zurück, wenn ohne Argumente aufgerufen. Übergib einen beliebigen nicht aufrufbaren Wert, um den Callback zu löschen.

ioctl(request: int, *args) Any

Führt eine sensorspezifische Anforderung aus. request ist eine der IOCTL_*-Konstanten; die übrigen Positionsargumente und der Rückgabewert hängen von der Anforderung ab. Die unterstützten Anforderungen sind unten nach Sensorfamilie gruppiert.

Generisch (jeder Sensor):

ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))

ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))

Setzt das Auslesefenster des Sensors. Ein kleineres Fenster erhöht die Bildrate auf Kosten des Sichtfelds.

ioctl(IOCTL_GET_READOUT_WINDOW)

Gibt das aktuelle Auslesefenster als (x, y, w, h)-Tupel zurück.

ioctl(IOCTL_SET_TRIGGERED_MODE, enable)

Aktiviert (True) oder deaktiviert (False) den getriggerten Modus auf der MT9V034.

ioctl(IOCTL_GET_TRIGGERED_MODE)

Gibt den aktuellen Zustand des getriggerten Modus als bool zurück.

ioctl(IOCTL_SET_FOV_WIDE, enable)

Bei True weist es framesize() an, auf das Sichtfeld statt auf die Bildrate zu optimieren.

ioctl(IOCTL_GET_FOV_WIDE)

Gibt den aktuellen FOV-Wide-Zustand als bool zurück.

ioctl(IOCTL_SET_NIGHT_MODE, enable)

Aktiviert (True) oder deaktiviert (False) den Schwachlicht-„Nachtmodus“ des Sensors. Nur OV7725 und OV5640.

ioctl(IOCTL_GET_NIGHT_MODE)

Gibt den aktuellen Nachtmodus-Zustand als bool zurück.

ioctl(IOCTL_GET_RGB_STATS)

Gibt ein 4-Tupel roher RGB-Kanal-Statistiken (r, gb, gr, b) zurück, die vom Sensor gelesen wurden (typischerweise zur Abstimmung des Weißabgleichs verwendet).

OV5640 FPC – Autofokus:

ioctl(IOCTL_TRIGGER_AUTO_FOCUS)

Startet einen Autofokus-Durchlauf am OV5640-FPC-Modul.

ioctl(IOCTL_PAUSE_AUTO_FOCUS)

Pausiert einen laufenden Autofokus-Durchlauf.

ioctl(IOCTL_RESET_AUTO_FOCUS)

Setzt die Autofokus-Position auf den Standardwert zurück.

ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)

ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)

Blockiert, bis der aktuelle Autofokus-Durchlauf abgeschlossen ist. timeout_ms ist standardmäßig 5000, falls weggelassen.

FLIR Lepton:

ioctl(IOCTL_LEPTON_GET_WIDTH)

Gibt die Breite des Lepton-Bildes in Pixeln zurück.

ioctl(IOCTL_LEPTON_GET_HEIGHT)

Gibt die Höhe des Lepton-Bildes in Pixeln zurück.

ioctl(IOCTL_LEPTON_GET_RADIOMETRY)

Gibt den Typ des Lepton (radiometrisch oder nicht) als int zurück.

ioctl(IOCTL_LEPTON_GET_REFRESH)

Gibt die Bildwiederholrate des Lepton in Hz zurück.

ioctl(IOCTL_LEPTON_GET_RESOLUTION)

Gibt die ADC-Auflösung des Lepton in Bits zurück.

ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)

Führt einen FLIR-Lepton-SDK-Befehl aus. cmd ist die vom SDK definierte 16-Bit-Befehls-ID.

ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)

Schreibt ein Lepton-SDK-Attribut. attr_id ist die 16-Bit-Attribut-ID; payload ist ein bytes/bytearray, dessen Länge ein Vielfaches von 16 Bit sein muss.

ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)

Liest ein Lepton-SDK-Attribut. attr_id ist die 16-Bit-Attribut-ID; words ist die Anzahl der zu lesenden 16-Bit-Wörter. Gibt ein bytearray zurück.

ioctl(IOCTL_LEPTON_GET_FPA_TEMP)

Gibt die Temperatur der Fokalebenenmatrix (focal-plane-array) des Lepton in Grad Celsius zurück.

ioctl(IOCTL_LEPTON_GET_AUX_TEMP)

Gibt die Hilfstemperatur des Lepton in Grad Celsius zurück.

ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)

ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)

Schaltet das Lepton zwischen AGC- und direkter Temperaturausgabe um. measurement_enabled=True aktiviert die direkte Temperaturausgabe. Das optionale Flag high_temp_enabled wählt den Hochtemperaturbereich.

ioctl(IOCTL_LEPTON_GET_MODE)

Gibt ein 2-Tupel (measurement_enabled, high_temp_enabled) zurück.

ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))

Setzt den auf 0..255 abgebildeten Temperaturbereich, wenn der Messmodus aktiviert ist.

ioctl(IOCTL_LEPTON_GET_RANGE)

Gibt den aktuellen (min_celsius, max_celsius)-Bereich zurück.

Himax HM01B0 – Bewegungserkennung:

ioctl(IOCTL_HIMAX_MD_ENABLE, enable)

Aktiviert (True) oder deaktiviert (False) den sensorinternen Bewegungserkennungsblock der HM01B0.

ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))

ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))

Setzt das Bewegungserkennungsfenster auf der HM01B0.

ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)

Setzt den Schwellenwert der Bewegungserkennung (0255).

ioctl(IOCTL_HIMAX_MD_CLEAR)

Löscht den Interrupt-Latch der Bewegungserkennung.

ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)

Aktiviert (True) oder deaktiviert (False) den internen Oszillator der HM01B0.

Prophesee GENX320 – Ereignissensor:

ioctl(IOCTL_GENX320_SET_BIASES, preset)

Wendet ein Bias-Preset an. preset ist eine der GENX320_BIASES_*-Konstanten.

ioctl(IOCTL_GENX320_SET_BIAS, bias, value)

Setzt einen einzelnen Bias. bias ist eine der GENX320_BIAS_*-Konstanten; value ist die ganzzahlige Einstellung.

ioctl(IOCTL_GENX320_SET_AFK, enable)

ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)

Konfiguriert den Anti-Flicker-Filter. enable ist ein bool; die optionalen Frequenzargumente legen das Durchlassband des Filters fest.

ioctl(IOCTL_GENX320_SET_STC, mode)

ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])

Konfiguriert den raumzeitlichen Kontrastfilter (spatio-temporal contrast). mode ist eine der GENX320_STC_*-Konstanten; bis zu zwei weitere Argumente sind modusspezifisch.

ioctl(IOCTL_GENX320_SET_MODE, mode)

ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)

Schaltet den Sensor zwischen Frame- und Ereignismodus um. mode ist eine der GENX320_MODE_*-Konstanten. Für den Ereignismodus ist evt_res die Zeilenachsen-Länge des Ereignispuffers, der an IOCTL_GENX320_READ_EVENTS übergeben wird.

ioctl(IOCTL_GENX320_READ_EVENTS, buf)

Liest Ereignisse in buf, ein uint16-ndarray der Form (EVT_res, 6), wobei EVT_res eine Zweierpotenz zwischen 1024 und 65536 ist. Die Spalten sind:

  • [0] – Ereignistyp (PIX_OFF_EVENT / PIX_ON_EVENT / Trigger).

  • [1] – Sekunden.

  • [2] – Millisekunden.

  • [3] – Mikrosekunden.

  • [4]x-Koordinate.

  • [5]y-Koordinate.

Gibt die Anzahl der geschriebenen Ereignisse zurück.

ioctl(IOCTL_GENX320_READ_EVENTS_RAW)

Gibt ein image.Image zurück, das das rohe Ereignis-Einzelbild der GENX320 enthält.

ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)

Schaltet Pixel ab, deren Rauschen mehr als sigma Standardabweichungen von der Normalverteilung abweicht. iterations ist die ganzzahlige Anzahl der Kalibrierungsdurchläufe. Gibt die Anzahl der deaktivierten Pixel zurück.

color_palette(palette: int | None = None) int | None

Setzt die zu verwendende Farbpalette für Dinge wie die Graustufen-zu-RGB565-Umwandlung des FLIR Lepton oder die Visualisierung von GENX320-Ereignissen. Eine von image.PALETTE_RAINBOW, image.PALETTE_IRONBOW und (sofern unterstützt) image.PALETTE_DEPTH, image.PALETTE_EVT_DARK oder image.PALETTE_EVT_LIGHT.

Gibt die aktuelle Einstellung zurück, wenn ohne Argumente aufgerufen.

__write_reg(address: int, value: int) None

Schreibt value in das Kameraregister an address.

Bemerkung

Siehe das Datenblatt der Kamera für Registerinformationen.

__read_reg(address: int) int

Liest das Kameraregister an address.

Bemerkung

Siehe das Datenblatt der Kamera für Registerinformationen.

Funktionen

csi.devices() List[int]

Gibt eine Liste der erkannten Sensor-Chip-IDs zurück.

Konstanten

csi.BINARY: int

BINARY-Pixelformat (Bitmap). Jeder Pixel ist 1-Bit. Nützlich für die Maskenspeicherung; kann mit image.Image() verwendet werden.

csi.GRAYSCALE: int

GRAYSCALE-Pixelformat (Y aus YUV422). Jeder Pixel ist 8-Bit.

csi.RGB565: int

RGB565-Pixelformat. Jeder Pixel ist 16-Bit (5-Bit Rot, 6-Bit Grün, 5-Bit Blau).

csi.BAYER: int

RAW-BAYER-Bildpixelformat.

csi.YUV422: int

YUV422-Pixelformat. Jeder Pixel wird als 8-Bit-Graustufen-Y-Wert gespeichert, gefolgt von abwechselnden 8-Bit-U/V-Farbwerten, die sich zwei Y-Werte teilen (Y1, U, Y2, V, …). Nur einige Bildverarbeitungsmethoden funktionieren mit YUV422.

csi.JPEG: int

JPEG-Modus. Das Kameramodul gibt komprimierte JPEG-Bilder aus. Verwende CSI.quality, um die JPEG-Qualität zu steuern. Funktioniert nur für die Kameras OV2640/OV5640.

csi.OV2640: int

CSI.cid gibt dies für die OV2640-Kamera zurück.

csi.OV5640: int

CSI.cid gibt dies für die OV5640-Kamera zurück.

csi.OV7670: int

CSI.cid gibt dies für die OV7670-Kamera zurück.

csi.OV7690: int

CSI.cid gibt dies für die OV7690-Kamera zurück.

csi.OV7725: int

CSI.cid gibt dies für die OV7725-Kamera zurück.

csi.OV9650: int

CSI.cid gibt dies für die OV9650-Kamera zurück.

csi.MT9V022: int

CSI.cid gibt dies für die MT9V022-Kamera zurück.

csi.MT9V024: int

CSI.cid gibt dies für die MT9V024-Kamera zurück.

csi.MT9V032: int

CSI.cid gibt dies für die MT9V032-Kamera zurück.

csi.MT9V034: int

CSI.cid gibt dies für die MT9V034-Kamera zurück.

csi.MT9M114: int

CSI.cid gibt dies für die MT9M114-Kamera zurück.

csi.BOSON320: int

CSI.cid gibt dies für die BOSON 320x256-Kamera zurück.

csi.BOSON640: int

CSI.cid gibt dies für die BOSON 640x512-Kamera zurück.

csi.LEPTON: int

CSI.cid gibt dies für die LEPTON1/2/3-Kameras zurück.

csi.HM01B0: int

CSI.cid gibt dies für die HM01B0-Kamera zurück.

csi.HM0360: int

CSI.cid gibt dies für die HM0360-Kamera zurück.

csi.GC2145: int

CSI.cid gibt dies für die GC2145-Kamera zurück.

csi.GENX320ES: int

CSI.cid gibt dies für die GENX320-Kamera (Engineering Sample) zurück.

csi.GENX320: int

CSI.cid gibt dies für die GENX320-Kamera zurück.

csi.PAG7920: int

CSI.cid gibt dies für die PAG7920-Kamera zurück.

csi.PAG7936: int

CSI.cid gibt dies für die PAG7936-Kamera zurück.

csi.PAJ6100: int

CSI.cid gibt dies für die PAJ6100-Kamera zurück.

csi.FROGEYE2020: int

CSI.cid gibt dies für die FROGEYE2020-Kamera zurück.

csi.SOFTCSI: int

CSI.cid gibt dies für die Software-CSI-Kamera zurück.

csi.NORMAL: int

Normalmodus für CSI.special_effect.

csi.NEGATIVE: int

Negativmodus für CSI.special_effect.

csi.QCIF: int

176x144-Auflösung für den Kamerasensor.

csi.CIF: int

352x288-Auflösung für den Kamerasensor.

csi.QSIF: int

176x120-Auflösung für den Kamerasensor.

csi.SIF: int

352x240-Auflösung für den Kamerasensor.

csi.QQQVGA: int

80x60-Auflösung für den Kamerasensor.

csi.QQVGA: int

160x120-Auflösung für den Kamerasensor.

csi.QVGA: int

320x240-Auflösung für den Kamerasensor.

csi.VGA: int

640x480-Auflösung für den Kamerasensor.

csi.HQVGA: int

240x160-Auflösung für den Kamerasensor.

csi.HVGA: int

480x320-Auflösung für den Kamerasensor.

csi.WVGA: int

720x480-Auflösung für den MT9V034-Kamerasensor.

csi.WVGA2: int

752x480-Auflösung für den MT9V034-Kamerasensor.

csi.SVGA: int

800x600-Auflösung für den Kamerasensor.

csi.XGA: int

1024x768-Auflösung für den Kamerasensor.

csi.WXGA: int

1280x768-Auflösung für den MT9M114-Kamerasensor.

csi.SXGA: int

1280x1024-Auflösung für den Kamerasensor. Funktioniert nur für die Kameras OV2640/OV5640.

csi.SXGAM: int

1280x960-Auflösung für den MT9M114-Kamerasensor.

csi.UXGA: int

1600x1200-Auflösung für den Kamerasensor. Funktioniert nur für die Kameras OV2640/OV5640.

csi.HD: int

1280x720-Auflösung für den Kamerasensor.

csi.FHD: int

1920x1080-Auflösung für den Kamerasensor. Funktioniert nur für die OV5640-Kamera.

csi.QHD: int

2560x1440-Auflösung für den Kamerasensor. Funktioniert nur für die OV5640-Kamera.

csi.QXGA: int

2048x1536-Auflösung für den Kamerasensor. Funktioniert nur für die OV5640-Kamera.

csi.WQXGA: int

2560x1600-Auflösung für den Kamerasensor. Funktioniert nur für die OV5640-Kamera.

csi.WQXGA2: int

2592x1944-Auflösung für den Kamerasensor. Funktioniert nur für die OV5640-Kamera.

csi.IOCTL_SET_READOUT_WINDOW: int

Setzt das Auslesefenster. Siehe CSI.ioctl.

csi.IOCTL_GET_READOUT_WINDOW: int

Liest das Auslesefenster aus. Siehe CSI.ioctl.

csi.IOCTL_SET_TRIGGERED_MODE: int

Setzt den getriggerten Modus für die MT9V034. Siehe CSI.ioctl.

csi.IOCTL_GET_TRIGGERED_MODE: int

Liest den Zustand des getriggerten Modus für die MT9V034 aus. Siehe CSI.ioctl.

csi.IOCTL_SET_FOV_WIDE: int

Aktiviert für CSI.framesize die Optimierung auf das Sichtfeld statt auf FPS. Siehe CSI.ioctl.

csi.IOCTL_GET_FOV_WIDE: int

Gibt zurück, ob CSI.framesize auf das Sichtfeld statt auf FPS optimiert. Siehe CSI.ioctl.

csi.IOCTL_TRIGGER_AUTO_FOCUS: int

Löst den Autofokus am OV5640-FPC-Kameramodul aus. Siehe CSI.ioctl.

csi.IOCTL_PAUSE_AUTO_FOCUS: int

Pausiert den Autofokus (während er läuft) für das OV5640-FPC-Kameramodul. Siehe CSI.ioctl.

csi.IOCTL_RESET_AUTO_FOCUS: int

Setzt den Autofokus für das OV5640-FPC-Kameramodul auf den Standardwert zurück. Siehe CSI.ioctl.

csi.IOCTL_WAIT_ON_AUTO_FOCUS: int

Wartet, bis der Autofokus am OV5640-FPC-Kameramodul abgeschlossen ist. Siehe CSI.ioctl.

csi.IOCTL_SET_NIGHT_MODE: int

Schaltet den Nachtmodus ein oder aus. Reduziert die Bildrate, um die Belichtung dynamisch zu erhöhen. Siehe CSI.ioctl.

csi.IOCTL_GET_NIGHT_MODE: int

Gibt zurück, ob der Nachtmodus aktiviert ist. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_WIDTH: int

Gibt die Breite der Bildauflösung des FLIR Lepton in Pixeln zurück. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_HEIGHT: int

Gibt die Höhe der Bildauflösung des FLIR Lepton in Pixeln zurück. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_RADIOMETRY: int

Gibt den Typ des FLIR Lepton (radiometrisch oder nicht) zurück. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_REFRESH: int

Gibt die Bildwiederholrate des FLIR Lepton in Hz zurück. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_RESOLUTION: int

Gibt die ADC-Auflösung des FLIR Lepton in Bits zurück. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_RUN_COMMAND: int

Führt einen 16-Bit-Befehl aus dem FLIR-Lepton-SDK aus. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_SET_ATTRIBUTE: int

Setzt ein FLIR-Lepton-Attribut aus dem FLIR-Lepton-SDK. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_ATTRIBUTE: int

Liest ein FLIR-Lepton-Attribut aus dem FLIR-Lepton-SDK. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_FPA_TEMP: int

Liest die FPA-Temperatur des FLIR Lepton in Celsius aus. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_AUX_TEMP: int

Liest die AUX-Temperatur des FLIR Lepton in Celsius aus. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_SET_MODE: int

Versetzt den FLIR-Lepton-Treiber in einen Modus, in dem jeder Pixel ein Temperaturwert ist. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_MODE: int

Gibt zurück, ob der Messmodus für den FLIR-Lepton-Sensor aktiviert ist. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_SET_RANGE: int

Setzt den auf Pixelwerte abgebildeten Temperaturbereich im Messmodus. Siehe CSI.ioctl.

csi.IOCTL_LEPTON_GET_RANGE: int

Gibt den für den Messmodus verwendeten Temperaturbereich zurück. Siehe CSI.ioctl.

csi.IOCTL_HIMAX_MD_ENABLE: int

Steuert den Bewegungserkennungs-Interrupt auf der HM01B0. Siehe CSI.ioctl.

csi.IOCTL_HIMAX_MD_WINDOW: int

Setzt das Bewegungserkennungsfenster auf der HM01B0. Siehe CSI.ioctl.

csi.IOCTL_HIMAX_MD_THRESHOLD: int

Setzt den Schwellenwert der Bewegungserkennung auf der HM01B0. Siehe CSI.ioctl.

csi.IOCTL_HIMAX_MD_CLEAR: int

Löscht den Bewegungserkennungs-Interrupt auf der HM01B0. Siehe CSI.ioctl.

csi.IOCTL_HIMAX_OSC_ENABLE: int

Steuert den internen Oszillator auf der HM01B0. Siehe CSI.ioctl.

csi.IOCTL_GET_RGB_STATS: int

Gibt die RGB-Statistiken vom Kamerasensor zurück. Siehe CSI.ioctl.

csi.IOCTL_GENX320_SET_BIASES: int

Setzt die Biases des GENX320-Sensors auf eines der GENX320_BIASES_*-Presets. Siehe CSI.ioctl. Nach CSI.reset wendet der Treiber csi.GENX320_BIASES_LOW_NOISE an, nicht csi.GENX320_BIASES_DEFAULT — verwende dieses ioctl, um auf ein anderes Preset umzuschalten, wenn die Anwendung mehr Empfindlichkeit oder Bandbreite benötigt.

csi.GENX320_BIASES_DEFAULT: int

GenX320-Datenblatt-Standardwerte — ausgewogene Empfindlichkeit, Rauschen und Bandbreite für allgemeine Szenen.

csi.GENX320_BIASES_LOW_LIGHT: int

Abgestimmt auf Schwachlichtbedingungen — beide Kontrast-Schwellenwerte gelockert für höhere Empfindlichkeit, FO abgesenkt, HPF deaktiviert, sodass auch langsame Helligkeitsänderungen noch registriert werden.

csi.GENX320_BIASES_ACTIVE_MARKER: int

Abgestimmt auf das Verfolgen kontrastreicher blinkender LEDs (aktive Marker) — Kontrast-Schwellenwerte angehoben, sodass nur scharfe Übergänge auslösen, FO und HPF hoch gedreht, um die Bandbreite zu maximieren und langsame Umgebungsdrift zu unterdrücken, REFR=0, sodass jede Blinkflanke erfasst wird.

csi.GENX320_BIASES_LOW_NOISE: int

Treiber-Standardwert — geringere Empfindlichkeit als DEFAULT (angehobene Kontrast-Schwellenwerte) und ein niedrigeres FO für weniger durch Hintergrundrauschen verursachte Aktivität. Am besten für statische oder langsame Szenen, in denen Falschereignisse überwiegen würden.

csi.GENX320_BIASES_HIGH_SPEED: int

Abgestimmt auf Szenen mit schneller Bewegung — höheres FO für eine breitere Pixelbandbreite, höherer HPF zur Unterdrückung langsamer Änderungen, höherer REFR für eine längere Totzeit nach jedem Ereignis, damit das Auslesen nicht in Sättigung gerät.

csi.IOCTL_GENX320_SET_BIAS: int

Setzt einen einzelnen GENX320-Sensor-Bias auf einen DAC-Wert. Übergib eine GENX320_BIAS_*-Konstante (csi.GENX320_BIAS_DIFF_OFF, csi.GENX320_BIAS_DIFF_ON, csi.GENX320_BIAS_FO, csi.GENX320_BIAS_HPF oder csi.GENX320_BIAS_REFR) und einen ganzzahligen DAC-Wert. Jeder Bias ist unabhängig — rufe dieses ioctl wiederholt auf, um nach dem Anwenden eines Presets nur die benötigten Biases anzupassen. Siehe CSI.ioctl.

csi.GENX320_BIAS_DIFF_OFF: int

Negativer Komparator-Kontrast-Schwellenwert — steuert, wie stark sich ein Pixel verdunkeln muss, bevor ein csi.PIX_OFF_EVENT ausgelöst wird. Niedrigerer Wert = empfindlicher (mehr Ereignisse).

csi.GENX320_BIAS_DIFF_ON: int

Positiver Komparator-Kontrast-Schwellenwert — steuert, wie stark sich ein Pixel aufhellen muss, bevor ein csi.PIX_ON_EVENT ausgelöst wird. Niedrigerer Wert = empfindlicher (mehr Ereignisse).

csi.GENX320_BIAS_FO: int

Pixel-Tiefpass-Grenzfrequenz — wägt die Pixelbandbreite (Geschwindigkeit/Latenz) gegen die durch Hintergrundrauschen verursachte Aktivität ab. Höherer Wert = schnellere Pixelreaktion, mehr Rauschen.

csi.GENX320_BIAS_HPF: int

Pixel-Hochpass-Grenzfrequenz — unterdrückt langsame Helligkeitsänderungen. Höherer Wert = langsamere Änderungen werden herausgefiltert (nur schnelle Übergänge registrieren).

csi.GENX320_BIAS_REFR: int

Pixel-Refraktärzeit — Totzeit, nachdem ein Pixel ein Ereignis abgegeben hat, während der es nicht erneut auslösen kann. Höherer Wert = längere Totzeit, weniger Ereignisse von einem stark beschäftigten Pixel.

csi.IOCTL_GENX320_SET_AFK: int

Setzt den Anti-Flicker-Filter (AFK) der GENX320, der Ereignisse von Pixeln unterdrückt, die mit einem periodischen Frequenzband umschalten (Leuchtstoffbeleuchtung, LED-getriebene Displays usw.). Übergib enable (1 zum Aktivieren, 0 zum Deaktivieren) und beim Aktivieren die Bandgrenzen in Hertz: (enable, freq_low_hz, freq_high_hz). Siehe CSI.ioctl.

csi.IOCTL_GENX320_SET_STC: int

Setzt den Modus des raumzeitlichen Kontrastfilters (STC, spatio-temporal contrast) der GENX320. Übergib eine GENX320_STC_*-Konstante (csi.GENX320_STC_DISABLE, csi.GENX320_STC_ONLY, csi.GENX320_STC_TRAIL_ONLY, csi.GENX320_STC_TRAIL), gefolgt von dem bzw. den Schwellenwerten, die der Modus erfordert (in Millisekunden). Siehe CSI.ioctl.

csi.GENX320_STC_DISABLE: int

Deaktiviert den STC-/Trail-Filter der GENX320 — jedes Ereignis wird durchgelassen.

csi.GENX320_STC_ONLY: int

Behält das zweite Ereignis eines Bursts; verwirft das erste Ereignis und alle späteren Ereignisse. Nimmt einen Parameter entgegen, stc_threshold in Millisekunden — Ereignisse, die innerhalb dieses Fensters eines vorherigen Ereignisses auf demselben Pixel liegen, werden als Teil desselben Bursts betrachtet.

csi.GENX320_STC_TRAIL_ONLY: int

Behält das erste Ereignis eines Bursts; verwirft nachfolgende Ereignisse auf demselben Pixel, bis trail_threshold verstrichen ist. Nimmt einen Parameter entgegen, trail_threshold in Millisekunden.

csi.GENX320_STC_TRAIL: int

Behält das erste Ereignis eines Bursts plus nachfolgende Flanken — kombiniert csi.GENX320_STC_ONLY und csi.GENX320_STC_TRAIL_ONLY. Nimmt zwei Parameter entgegen, stc_threshold und trail_threshold (beide ms); der Sensor verlangt, dass die beiden ungefähr in einem Verhältnis von 13:1 bleiben.

csi.IOCTL_GENX320_SET_MODE: int

Setzt den Betriebsmodus der GENX320. Übergib csi.GENX320_MODE_HISTO für das On-Chip-Ereignishistogramm (die Kamera verhält sich wie eine normale Graustufenkamera mit der konfigurierten Bildrate) oder csi.GENX320_MODE_EVENT, gefolgt von der Zeilenachsen-Länge des Ereignis-ndarray (eine Zweierpotenz zwischen 1024 und 65536) für das rohe Ereignis-Streaming. Siehe CSI.ioctl.

csi.GENX320_MODE_HISTO: int

Histogramm-Modus — Ereignisse werden On-Chip in Bins pro Pixel akkumuliert und als 320x320-Graustufen-Einzelbild mit der konfigurierten Rate (~20-350 FPS) gemeldet. Die Kamera sieht aus wie eine normale Kamera, sodass alle gängigen Bildverarbeitungsroutinen direkt funktionieren.

csi.GENX320_MODE_EVENT: int

Ereignismodus — umgeht das On-Chip-Histogramm und streamt rohe Ereignisse mit Mikrosekunden-Zeitstempeln in ein numpy-ndarray, für Anwendungen, die das volle zeitliche Detail statt eines vorgebinnten Einzelbilds benötigen.

csi.IOCTL_GENX320_READ_EVENTS: int

Liest rohe Ereignisse in ein uint16-ndarray der Form (EVT_res, 6) (wobei EVT_res der an csi.IOCTL_GENX320_SET_MODE übergebenen Puffergröße entspricht). Die Spalten sind [0] Ereignistyp (csi.PIX_OFF_EVENT, csi.PIX_ON_EVENT, csi.EXT_TRIGGER_RISING/FALLING, csi.RST_TRIGGER_RISING/FALLING), [1] Sekunden-Zeitstempel, [2] Millisekunden, [3] Mikrosekunden, [4] X-Koordinate (0-319), [5] Y-Koordinate (0-319). Gibt die Anzahl der in den Puffer geschriebenen Ereignisse zurück und lässt ältere Zeilen über diese Anzahl hinaus unberührt. Siehe CSI.ioctl.

csi.IOCTL_GENX320_CALIBRATE: int

Deaktiviert automatisch heiße Pixel — Pixel, die selbst bei einer statischen Szene fälschlicherweise auslösen. Der Treiber erstellt eine 320x320-Trefferzählung pro Pixel, berechnet Mittelwert und Standardabweichung und deaktiviert jeden Pixel, dessen Zählung mean + sigma * stddev überschreitet. Übergib ein Ereignis-Zählungsbudget (Ereignisse, die vor dem Berechnen der Statistiken gezählt werden — höher = zuverlässigere Schätzung, langsamer; ~10000 ist ein guter Standardwert) und einen sigma-Float (niedriger = aggressiver, ~0.5 Standardwert). Gibt die Anzahl der deaktivierten Pixel zurück. Richte die Kamera zuerst auf eine statische Szene, damit bewegungsgetriebene Ereignisse nicht gegen Pixel gezählt werden, die eigentlich in Ordnung sind. Siehe CSI.ioctl.

csi.IOCTL_GENX320_READ_EVENTS_RAW: int

Gibt ein rohes Ereignis-Einzelbild als image.Image von der GENX320 zurück, wobei die Ereignisse noch in der nativen gepackten Codierung des Chips vorliegen — nützlich, wenn du den Rohstream zur Offline-Decodierung an einen PC weiterleiten möchtest, anstatt ihn auf der Kamera zu verarbeiten. Siehe CSI.ioctl.

csi.PIX_OFF_EVENT: int

GENX320-Ereignistyp (Spalte [0]) — ein Pixel hat eine Helligkeitsabnahme erkannt (der negative Kontrast-Schwellenwert wurde überschritten). Die Spalten [4]/[5] enthalten X/Y des Pixels.

csi.PIX_ON_EVENT: int

GENX320-Ereignistyp (Spalte [0]) — ein Pixel hat eine Helligkeitszunahme erkannt (der positive Kontrast-Schwellenwert wurde überschritten). Die Spalten [4]/[5] enthalten X/Y des Pixels.

csi.RST_TRIGGER_RISING: int

GENX320-Ereignistyp (Spalte [0]) — Pixel-Reset-Trigger, steigende Flanke. X/Y werden nicht verwendet. Wird derzeit von der Firmware nicht erzeugt.

csi.RST_TRIGGER_FALLING: int

GENX320-Ereignistyp (Spalte [0]) — Pixel-Reset-Trigger, fallende Flanke. X/Y werden nicht verwendet. Wird derzeit von der Firmware nicht erzeugt.

csi.EXT_TRIGGER_RISING: int

GENX320-Ereignistyp (Spalte [0]) — der externe Trigger-Pin des Sensors hat eine steigende Flanke gesehen. Der externe Trigger-Eingang der GENX320 ist mit der Frame-Sync-Leitung der Kamera verdrahtet, die auch zu P10 am Prozessor und zur Stiftleiste geführt wird. X/Y werden nicht verwendet.

csi.EXT_TRIGGER_FALLING: int

GENX320-Ereignistyp (Spalte [0]) — der externe Trigger-Pin des Sensors hat eine fallende Flanke gesehen. Der externe Trigger-Eingang der GENX320 ist mit der Frame-Sync-Leitung der Kamera verdrahtet, die auch zu P10 am Prozessor und zur Stiftleiste geführt wird. X/Y werden nicht verwendet.