class Image – Image-Objekt

Image ist der zentrale Datentyp des Moduls image – ein Pixelpuffer im Speicher, auf dem jede Zeichenroutine, jeder Filter, jede geometrische Transformation und jede Routine zur Merkmalsextraktion arbeitet. Jedes Einzelbild, das aus csi.CSI.snapshot() kommt, ist ein Image; ebenso jedes von der Festplatte geladene, aus JPEG oder PNG dekodierte, aus einem numpy-artigen ndarray allokierte oder als leere Zeichenfläche erstellte Einzelbild.

Ein Image wird durch drei Zahlen beschrieben – width, height und pixformat – sowie einen zusammenhängenden Pixelpuffer. Das Pixelformat bestimmt sowohl die Speicheranordnung als auch, welche Operationen verfügbar sind:

  • BINARY (1 bpp) – 1 Bit pro Pixel; wird von Morphologie und Schwellenwertbildung verwendet.

  • GRAYSCALE (8 bpp) – 1 Byte pro Pixel; das kanonische Format für die meisten CV-Verfahren (AprilTag, Kanten, ORB, optischer Fluss).

  • RGB565 (16 bpp) – 2 Byte pro Pixel (5R/6G/5B); das Standard-Farbformat.

  • BAYER (8 bpp) – rohe Bayer-Mosaikdaten direkt vom Sensor. Die meisten CV-Methoden sind für Bayer-Bilder nicht verfügbar; debayern Sie zuerst nach GRAYSCALE / RGB565.

  • YUV422 (16 bpp) – 4:2:2 chroma-unterabgetastete Farbe, zwei Byte pro Pixel. Nur einige Methoden arbeiten direkt auf YUV422.

  • JPEG / PNG – komprimierte Puffer. Pixelbasierte Operationen erfordern zuerst to_grayscale() oder to_rgb565().

Woher Image-Objekte stammen

Es gibt vier Möglichkeiten, ein Image zu erhalten:

  • Aus dem Kamera-Framebuffercsi.CSI().snapshot() gibt das nächste aufgenommene Einzelbild zurück. Das zurückgegebene Objekt ist ein dünner Wrapper um den Framebuffer-Speicher der Kamera, sodass jede Zeichen-/Filteroperation darauf verändert, was an die IDE-Vorschau und das Display gesendet wird.

  • Aus einer Datei – übergeben Sie einen Pfad-String an den Image-Konstruktor. BMP, PGM, PPM, JPEG und PNG werden direkt in den RAM dekodiert (oder in den Kamera-Framebuffer, falls copy_to_fb=True).

  • Aus einem ndarray – übergeben Sie ein (h, w)- oder (h, w, 3)-float32-Array. Die Pixel werden von 0.0 -- 255.0 nach GRAYSCALE bzw. RGB565 skaliert.

  • Leer – übergeben Sie (width, height, pixformat), um eine mit Null gefüllte Zeichenfläche zu allokieren. Für komprimierte Pixelformate (JPEG / PNG) ist ein buffer=-Argument erforderlich, das den komprimierten Byte-Stream enthält.

Typische Aufnahme-Verarbeitungs-Anzeige-Schleife

import csi
import image

sensor = csi.CSI()
sensor.reset()
sensor.pixformat(csi.RGB565)
sensor.framesize(csi.QVGA)

while True:
    img = sensor.snapshot()                    # capture
    for blob in img.find_blobs([(30, 100, 15, 127, 15, 127)]):  # process
        img.draw_rectangle(blob.rect)          # annotate
    # img is shown automatically in the IDE preview and on any
    # attached display.

Indizierung, Länge, Iteration und bytes-artiger Zugriff

  • Indizierungimg[i] liest Pixel i (linear, zeilenweise). img[i] = value schreibt es. Graustufen-/Bayer-Pixel sind 8-Bit-Ganzzahlen, RGB565-/YUV422-Pixel sind 16-Bit-gepackte Ganzzahlen, Binärpixel sind 0 / 1. Bei JPEG-/PNG-Bildern ist der Indexraum der komprimierte Byte-Stream, nicht die Pixel.

  • Längelen(img) gibt die Anzahl der Pixel für unkomprimierte Formate oder die Byte-Anzahl für komprimierte Formate zurück.

  • Iterationfor px in img: ... durchläuft das Pixel-Array in derselben Reihenfolge wie die []-Indizierung.

  • Bytes-artigImage stellt das Lesepuffer-Protokoll bereit, sodass Sie es direkt an alles übergeben können, das ein bytes / bytearray akzeptiert (z. B. uart.write(img), socket.send(img), hashlib.sha256(img)). Verwenden Sie stattdessen bytearray(), um eine Lese-/Schreibansicht zu erhalten.

Hinweis-Flags

Viele Image-Methoden akzeptieren ein hint-Argument, das ein logisches OR der folgenden Flags ist:

class image.Image(arg: str | int | ndarray, height: int = -1, pixformat: int = -1, *, buffer: bytes | bytearray | memoryview | None = None, copy_to_fb: bool = False)

Wenn arg ein String ist, erstellt dies ein neues Bildobjekt aus einer Datei am Pfad arg. Unterstützt das Laden von bmp/pgm/ppm/jpg/jpeg/png-Bilddateien von der Festplatte. Falls copy_to_fb true ist, wird das Bild in den Framebuffer kopiert, statt auf dem Heap allokiert zu werden.

Wenn arg ein ndarray ist, erstellt dies ein neues Bildobjekt aus dem ndarray. ndarray-Objekte mit der Form (w, h) werden als Graustufenbilder behandelt, (w, h, 3) als RGB565-Bilder. Derzeit werden nur float32-ndarrays unterstützt. Wenn Sie auf diese Weise ein Bild erstellen und ein buffer-Argument übergeben, wird dieses zum Speichern der Bilddaten verwendet, statt Speicher auf dem Heap zu allokieren. Falls copy_to_fb true ist, wird das Bild in den Framebuffer kopiert, statt auf dem Heap oder im buffer allokiert zu werden.

Wenn arg ein int ist, wird es als Breite eines neuen Bildes betrachtet, und ein height-Wert sowie ein format-Wert müssen folgen, um ein neues leeres Bildobjekt zu erstellen. format kann ein beliebiger Bild-Pixformat-Wert wie image.GRAYSCALE sein. Das Bild wird mit lauter Nullen initialisiert. Beachten Sie, dass für komprimierte Bildformate ein buffer-Wert erwartet wird. buffer wird auf diese Weise als Quelle der Bilddaten zur Bilderstellung betrachtet. Bei Verwendung mit copy_to_fb werden die Daten aus buffer in den Framebuffer kopiert. Wenn Sie ein JPEG-Bild aus einem JPEG-bytes()- oder -bytearray()-Objekt erstellen möchten, können Sie width, height, image.JPEG für das JPEG übergeben und buffer auf den JPEG-Byte-Stream setzen, um ein JPEG-Bild zu erstellen.

Bilder unterstützen die „[]“-Notation. Verwenden Sie image[index] = 8/16-bit value, um einem Bildpixel einen Wert zuzuweisen, oder image[index], um einen Bildpixel zu erhalten, was entweder ein 8-Bit-Wert für Graustufen-/Bayer-Bilder oder ein 16-Bit-Wert für RGB565-/YUV-Bilder ist. Binärbilder geben einen 1-Bit-Wert zurück.

Bei JPEG-Bildern ermöglicht das „[]“ den Zugriff auf den komprimierten JPEG-Bild-Blob als Byte-Array. Das Lesen und Schreiben des Daten-Arrays ist jedoch undurchsichtig, da JPEG-Bilder komprimierte Byte-Streams sind.

Bilder unterstützen außerdem Lesepuffer-Operationen. Sie können Bilder an alle möglichen MicroPython-Funktionen übergeben, als wäre das Bild ein Byte-Array-Objekt. Insbesondere, wenn Sie ein Bild übertragen möchten, können Sie es einfach an die UART/SPI/I2C-Schreibfunktionen übergeben, um es automatisch zu übertragen.

Grundlegende Methoden

width() int

Gibt die Bildbreite in Pixeln zurück.

height() int

Gibt die Bildhöhe in Pixeln zurück.

format() int

Gibt image.GRAYSCALE für Graustufenbilder, image.RGB565 für RGB565-Bilder, image.BAYER für Bayer-Pattern-Bilder und image.JPEG für JPEG-Bilder zurück.

size() int

Gibt die Bildgröße in Bytes zurück.

bytearray() bytearray

Gibt ein bytearray-Objekt zurück, das auf die Bilddaten für byteweisen Lese-/Schreibzugriff zeigt.

Bemerkung

Bildobjekte werden automatisch als bytes-Objekte gecastet, wenn sie an einen MicroPython-Treiber übergeben werden, der ein bytes-artiges Objekt erfordert. Dies ist ein Nur-Lese-Zugriff. Rufen Sie bytearray() auf, um Lese-/Schreibzugriff zu erhalten.

get_pixel(x: int, y: int, rgbtuple: bool | None = None) int | Tuple[int, int, int]

Bei Graustufenbildern: Gibt den Graustufen-Pixelwert an Position (x, y) zurück. Bei RGB565-Bildern: Gibt das RGB888-Pixel-Tupel (r, g, b) an Position (x, y) zurück. Bei Bayer-Pattern-Bildern: Gibt den Pixelwert an Position (x, y) zurück.

Gibt None zurück, falls x oder y außerhalb des Bildes liegt.

x und y können entweder einzeln oder als Tupel übergeben werden.

rgbtuple bewirkt bei True, dass diese Methode ein RGB888-Tupel zurückgibt. Andernfalls gibt diese Methode den Ganzzahlwert des zugrunde liegenden Pixels zurück. D. h. bei RGB565-Bildern gibt diese Methode einen RGB565-Wert zurück. Standardmäßig True für RGB565-Bilder und sonst False.

Wird bei komprimierten Bildern nicht unterstützt.

Bemerkung

Image.get_pixel() und Image.set_pixel() sind die einzigen Methoden, mit denen Sie Bayer-Pattern-Bilder manipulieren können. Bayer-Pattern-Bilder sind buchstäbliche Bilder, bei denen die Pixel im Bild R/G/R/G/usw. für gerade Zeilen und G/B/G/B/usw. für ungerade Zeilen sind. Jedes Pixel ist 8 Bit groß. Wenn Sie diese Methode mit gesetztem rgbtuple aufrufen, debayert Image.get_pixel() das Quellbild an dieser Pixelposition und gibt ein gültiges RGB888-Tupel für die Pixelposition zurück.

set_pixel(x: int, y: int, pixel: int | Tuple[int, int, int]) Image

Bei Graustufenbildern: Setzt das Pixel an Position (x, y) auf den Graustufenwert pixel. Bei RGB565-Bildern: Setzt das Pixel an Position (x, y) auf das RGB888-Tupel (r, g, b) pixel. Bei Bayer-Pattern-Bildern: Setzt den Pixelwert an Position (x, y) auf den Wert pixel.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

x und y können entweder einzeln oder als Tupel übergeben werden.

pixel kann entweder ein RGB888-Tupel (r, g, b) oder der zugrunde liegende Pixelwert sein (d. h. ein RGB565-Wert für RGB565-Bilder oder ein 8-Bit-Wert für Graustufenbilder).

Wird bei komprimierten Bildern nicht unterstützt.

Bemerkung

Image.get_pixel() und Image.set_pixel() sind die einzigen Methoden, mit denen Sie Bayer-Pattern-Bilder manipulieren können. Bayer-Pattern-Bilder sind buchstäbliche Bilder, bei denen die Pixel im Bild R/G/R/G/usw. für gerade Zeilen und G/B/G/B/usw. für ungerade Zeilen sind. Jedes Pixel ist 8 Bit groß. Wenn Sie diese Methode mit einem RGB888-Tupel aufrufen, wird der Graustufenwert dieses RGB888-Tupels extrahiert und an der Pixelposition gesetzt.

Konvertierungsmethoden

to_ndarray(dtype: str, buffer: bytes | bytearray | memoryview | None = None) ndarray

Gibt ein aus dem Bild erstelltes ndarray-Objekt zurück. Dies funktioniert derzeit nur für GRAYSCALE- oder RGB565-Bilder.

dtype kann b, B oder f sein, um ein vorzeichenbehaftetes 8-Bit-, ein vorzeichenloses 8-Bit- oder ein 32-Bit-Gleitkomma-ndarray zu erstellen. GRAYSCALE-Bilder werden direkt in vorzeichenlose 8-Bit-ndarray-Objekte konvertiert. Bei vorzeichenbehafteten 8-Bit-ndarray-Objekten werden die Werte (0:255) auf (-127:128) abgebildet. Bei float-32-Bit-ndarray-Objekten werden die Werte auf (0.0:255.0) abgebildet. RGB565-Bilder werden in 3-Kanal-ndarray-Objekte konvertiert, und der oben für GRAYSCALE-Bilder beschriebene Vorgang wird je nach dtype auf jeden Kanal angewendet. Beachten Sie, dass dtype auch die Ganzzahlwerte (z. B. via ord()) von b, B bzw. f akzeptiert.

buffer ist, falls nicht None, ein bytearray-Objekt, das als Puffer für das ndarray verwendet wird. Bei None wird ein neuer Puffer auf dem Heap allokiert, um die ndarray-Bilddaten zu speichern. Sie können das buffer-Argument verwenden, um das ndarray direkt in einem vorab allokierten Puffer zu allokieren und so eine Heap-Allokation und einen Kopiervorgang einzusparen.

Das zurückgegebene ndarray hat die Form (height, width) bei GRAYSCALE-Bildern und (height, width, 3) bei RGB565-Bildern.

to_bitmap(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Konvertiert ein Bild in ein Bitmap-Bild (1 Bit pro Pixel).

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Bemerkung

Bitmap-Bilder sind wie Graustufenbilder mit nur zwei Pixelwerten – 0 und 1. Zusätzlich sind Bitmap-Bilder so gepackt, dass sie nur 1 Bit pro Pixel speichern, was sie sehr klein macht. Die OpenMV-Bildbibliothek erlaubt die Verwendung von Bitmap-Bildern an allen Stellen, an denen sensor.GRAYSCALE- und sensor.RGB565-Bilder verwendet werden können. Viele Operationen ergeben jedoch bei Anwendung auf Bitmap-Bilder keinen Sinn, da Bitmap-Bilder nur 2 Werte haben. OpenMV empfiehlt die Verwendung von Bitmap-Bildern für mask-Werte in Operationen und dergleichen, da sie recht problemlos auf den MicroPython-Heap passen. Schließlich werden die Bitmap-Bildpixelwerte 0 und 1 als Schwarz und Weiß interpretiert, wenn sie auf sensor.GRAYSCALE- oder sensor.RGB565-Bilder angewendet werden. Die Bibliothek übernimmt die Konvertierung automatisch.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

to_grayscale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Konvertiert ein Bild in ein Graustufenbild (8 Bit pro Pixel).

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

to_rgb565(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Konvertiert ein Bild in ein RGB565-Bild (16 Bit pro Pixel).

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

to_rainbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_RAINBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Konvertiert ein Bild in ein RGB565-Rainbow-Bild (16 Bit pro Pixel).

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

to_ironbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Konvertiert ein Bild in ein RGB565-Ironbow-Bild (16 Bit pro Pixel).

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

to_depth(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Konvertiert ein Bild in ein RGB565-Tiefenbild (16 Bit pro Pixel).

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, image.PALETTE_DEPTH oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

to_evt_dark(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Konvertiert ein Bild in ein RGB565-Dark-Event-Bild (16 Bit pro Pixel).

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

to_evt_light(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Konvertiert ein Bild in ein RGB565-Light-Event-Bild (16 Bit pro Pixel).

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

to_jpeg(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image

Konvertiert ein Bild in ein JPEG-Bild.

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

quality steuert die JPEG-Bildkompressionsqualität. Der Wert kann zwischen 0 und 100 liegen.

subsampling kann sein:

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

to_png(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Konvertiert ein Bild in ein PNG-Bild.

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

compress(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image

Konvertiert ein Bild in ein JPEG-Bild.

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

quality steuert die JPEG-Bildkompressionsqualität. Der Wert kann zwischen 0 und 100 liegen.

subsampling kann sein:

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Bemerkung

Image.compress ist ein Alias für Image.to_jpeg.

copy(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy_to_fb: bool = False) Image

Erstellt eine tiefe Kopie des Bildobjekts.

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

crop(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Verändert ein Bild an Ort und Stelle, ohne den zugrunde liegenden Bildtyp zu ändern.

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

scale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image

Verändert ein Bild an Ort und Stelle, ohne den zugrunde liegenden Bildtyp zu ändern.

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommen image.BLACK_BACKGROUND, das hier nicht unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

copy erstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.

copy_to_fb lädt das Bild bei True direkt in den Framebuffer. copy_to_fb hat Vorrang vor copy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Bemerkung

Image.scale ist ein Alias für Image.crop.

save(path: str, roi: Tuple[int, int, int, int] | None = None, quality: int = 50) Image

Speichert eine Kopie des Bildes im Dateisystem unter path.

Unterstützt bmp/pgm/ppm/jpg/jpeg-Bilddateien. Beachten Sie, dass Sie JPEG-komprimierte Bilder nicht in einem unkomprimierten Format speichern können.

roi ist das Interessensbereich-Rechteck (x, y, w, h), aus dem gespeichert werden soll. Falls nicht angegeben, entspricht es dem Bildrechteck, was das gesamte Bild kopiert. Dieses Argument ist für JPEG-Bilder nicht anwendbar.

quality ist die JPEG-Kompressionsqualität, die zum Speichern des Bildes im JPEG-Format verwendet wird, falls das Bild nicht bereits komprimiert ist (0-100) (int).

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

flush() None

Aktualisiert den Framebuffer in der IDE mit dem Bild im Framebuffer auf der Kamera.

Zeichenmethoden

clear(mask: Image | None = None) Image

Setzt alle Pixel im Bild auf Null (sehr schnell).

mask ist ein weiteres Bild, das als Maske auf Pixelebene für die Operation verwendet wird. Die Maske sollte ein Bild mit nur schwarzen oder weißen Pixeln sein und dieselbe Größe wie das bearbeitete Bild haben. Nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern nicht unterstützt.

draw_line(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image

Zeichnet eine Linie von (x0, y0) nach (x1, y1) auf dem Bild. Sie können x0, y0, x1, y1 entweder einzeln oder als Tupel (x0, y0, x1, y1) übergeben.

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

thickness steuert, wie dick die Linie in Pixeln ist.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

draw_rectangle(x: int, y: int, w: int, h: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image

Zeichnet ein Rechteck auf dem Bild. Sie können x, y, w, h entweder einzeln oder als Tupel (x, y, w, h) übergeben.

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

thickness steuert, wie dick die Linien in Pixeln sind.

Setzen Sie fill auf True, um das Rechteck zu füllen.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

draw_circle(x: int, y: int, radius: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image

Zeichnet einen Kreis auf dem Bild. Sie können x, y, radius entweder einzeln oder als Tupel (x, y, radius) übergeben.

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

thickness steuert, wie dick die Kanten in Pixeln sind.

Setzen Sie fill auf True, um den Kreis zu füllen.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

draw_ellipse(cx: int, cy: int, rx: int, ry: int, rotation: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image

Zeichnet eine Ellipse auf dem Bild. Sie können cx, cy, rx, ry und die Rotation (in Grad) entweder einzeln oder als Tupel (cx, yc, rx, ry, rotation) übergeben.

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

thickness steuert, wie dick die Kanten in Pixeln sind.

Setzen Sie fill auf True, um die Ellipse zu füllen.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

draw_string(x: int, y: int, text: str, color: int | Tuple[int, int, int] | None = None, scale: float = 1, x_spacing: int = 0, y_spacing: int = 0, mono_space: bool = True, char_rotation: int = 0, char_hmirror: bool = False, char_vflip: bool = False, string_rotation: int = 0, string_hmirror: bool = False, string_vflip: bool = False) Image

Zeichnet 8x10-Text beginnend an Position (x, y) im Bild. Sie können x, y entweder einzeln oder als Tupel (x, y) übergeben.

text ist ein String, der in das Bild geschrieben werden soll. Die Zeilenenden \n, \r und \r\n bewegen den Cursor in die nächste Zeile.

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

scale kann erhöht werden, um die Größe des Textes im Bild zu vergrößern/verkleinern. Sie können Ganzzahl- oder Gleitkommawerte größer als 0 übergeben.

x_spacing ermöglicht es Ihnen, x-Pixel zwischen Zeichen hinzuzufügen (falls positiv) oder abzuziehen (falls negativ).

y_spacing ermöglicht es Ihnen, y-Pixel zwischen Zeichen hinzuzufügen (falls positiv) oder abzuziehen (falls negativ) (bei mehrzeiligem Text).

mono_space ist standardmäßig True, was Text mit fester Zeichenbreite erzwingt. Bei großen Textskalierungen sieht das schrecklich aus. Setzen Sie es auf False, um eine variable Zeichenbreite zu erhalten, die VIEL besser aussieht.

char_rotation kann 0, 90, 180, 270 sein, um jedes Zeichen im String um diesen Betrag zu drehen.

char_hmirror spiegelt bei True alle Zeichen im String horizontal.

char_vflip kippt bei True alle Zeichen im String vertikal.

string_rotation kann 0, 90, 180, 270 sein, um den String um diesen Betrag zu drehen.

string_hmirror spiegelt bei True den String horizontal.

string_vflip kippt bei True den String vertikal.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

draw_cross(x: int, y: int, color: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1) Image

Zeichnet ein Kreuz an Position x, y. Sie können x, y entweder einzeln oder als Tupel (x, y) übergeben.

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

size steuert, wie lang die Linien des Kreuzes verlaufen.

thickness steuert, wie dick die Kanten in Pixeln sind.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

draw_arrow(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image

Zeichnet einen Pfeil von (x0, y0) nach (x1, y1) auf dem Bild. Sie können x0, y0, x1, y1 entweder einzeln oder als Tupel (x0, y0, x1, y1) übergeben.

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

thickness steuert, wie dick die Linie in Pixeln ist.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

draw_detection(detection: Tuple[int, int, int, int, int, int], color1: int | Tuple[int, int, int] | None = None, color2: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1, fill: bool = False, label: str | None = None, label_offset: Tuple[int, int] | None = None) Image

Zeichnet ein Erkennungsergebnis auf das Bild. detection ist ein 6-Tupel (rx, ry, rw, rh, cx, cy), das einen Begrenzungsrahmen und einen Schwerpunkt beschreibt (typischerweise von NN- oder Farbverfolgungscode zurückgegeben).

color1 ist die Rechteckfarbe und color2 ist die Farbe des Schwerpunktkreuzes. size ist die Größe des Schwerpunktkreuzes, thickness steuert die Umrissbreite, und fill füllt das Rechteck.

label wird, falls angegeben, in der Nähe des Rechtecks gezeichnet, versetzt um label_offset (x, y).

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

draw_edges(corners: List[Tuple[int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 0, thickness: int = 1, fill: bool = False) Image

Zeichnet Linienkanten zwischen einer Eckenliste, die von Methoden wie blob.corners zurückgegeben wird. Corners ist ein Tupel mit vier Werten aus zweiwertigen x/y-Tupeln. Z. B. [(x1,y1),(x2,y2),(x3,y3),(x4,y4)].

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

size bewirkt bei einem Wert größer als 0, dass die Ecken als Kreise mit Radius size gezeichnet werden.

thickness steuert, wie dick die Linie in Pixeln ist.

Setzen Sie fill auf True, um die Eckkreise zu füllen, falls sie gezeichnet werden.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

draw_image(image: Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, mask: Image | None = None) Image

Zeichnet ein image, dessen obere linke Ecke an Position x, y beginnt. Sie können x, y entweder einzeln oder als Tupel (x, y) übergeben. Diese Methode kümmert sich automatisch um das Rendern des übergebenen Bildes in das korrekte Pixelformat für das Zielbild und behandelt dabei auch das Clipping nahtlos.

Sie können auch einen Pfad statt eines Bildobjekts an diese Methode übergeben, damit das Bild automatisch von der Festplatte geladen und in einem Schritt verwendet wird. Z. B. draw_image("test.jpg").

x_scale steuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dass y_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

y_scale steuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dass x_scale, falls nicht angegeben, x_scale entspricht, um das Seitenverhältnis beizubehalten.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h) des zu zeichnenden Quellbildes. Dies ermöglicht es Ihnen, nur die Pixel in der ROI zu extrahieren, um sie zu skalieren und auf das Zielbild zu zeichnen.

rgb_channel ist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild (falls übergeben) extrahiert und auf das Zielbild gerendert werden soll. Wenn Sie zum Beispiel rgb_channel=1 übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.

alpha steuert, wie viel des Quellbildes in das Zielbild eingeblendet wird. Ein Wert von 255 zeichnet ein undurchsichtiges Quellbild, während ein Wert kleiner als 255 eine Mischung zwischen Quell- und Zielbild erzeugt. 0 führt zu keiner Veränderung des Zielbildes.

color_palette kann, falls nicht None, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

alpha_palette kann, falls nicht None, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die den alpha-Wert des gezeichneten Quellbildes auf Pixelebene moduliert, sodass Sie den Alpha-Wert der Pixel basierend auf ihrem Graustufenwert präzise steuern können. Ein Pixelwert von 255 in der Alpha-Lookup-Tabelle ist undurchsichtig, während alles unter 255 zunehmend transparenter wird, bis hin zu 0. Dies wird nach der rgb_channel-Extraktion angewendet, falls verwendet.

hint ist ein logisches OR der unter Hint flags aufgeführten Flags (einschließlich image.BLACK_BACKGROUND, das hier unterstützt wird).

transform ist ein 3x3-ndarray, das verwendet wird, um eine perspektivische Transformation auf dem Bild durchzuführen. Wird derzeit nur auf der OpenMV Cam N6 unterstützt, da diese eine GPU besitzt, die dies in Hardware ausführen kann.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

draw_keypoints(keypoints: kp_desc | List[Tuple[int, int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 10, thickness: int = 1, fill: bool = False) Image

Zeichnet die Schlüsselpunkte eines Schlüsselpunkt-Objekts auf das Bild. Sie können auch eine Liste von Tupeln mit drei Werten übergeben, die (x, y, rotation_angle_in_degrees) enthalten, um diese Methode zum Zeichnen von Schlüsselpunkt-Glyphen wiederzuverwenden, welche ein Kreis mit einer in eine bestimmte Richtung zeigenden Linie sind.

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

size steuert, wie groß die Schlüsselpunkte sind.

thickness steuert, wie dick die Linie in Pixeln ist.

Setzen Sie fill auf True, um die Schlüsselpunkte zu füllen.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

flood_fill(x: int, y: int, seed_threshold: float = 0.05, floating_threshold: float = 0.05, color: int | Tuple[int, int, int] | None = None, invert: bool = False, clear_background: bool = False, mask: Image | None = None) Image

Füllt einen Bereich des Bildes per Flood-Fill ab Position x, y. Sie können x, y entweder einzeln oder als Tupel (x, y) übergeben.

seed_threshold steuert, wie stark sich ein beliebiges Pixel im Füllbereich vom ursprünglichen Startpixel unterscheiden darf.

floating_threshold steuert, wie stark sich ein beliebiges Pixel im Füllbereich von beliebigen Nachbarpixeln unterscheiden darf.

color ist ein RGB888-Tupel für Graustufen- oder RGB565-Bilder. Standardmäßig Weiß. Sie können jedoch auch den zugrunde liegenden Pixelwert (0-255) für Graustufenbilder oder einen RGB565-Wert für RGB565-Bilder übergeben.

Übergeben Sie invert als True, um alles außerhalb des per Flood-Fill verbundenen Bereichs neu einzufärben.

Übergeben Sie clear_background als True, um die übrigen Pixel, die der Flood-Fill nicht neu eingefärbt hat, auf Null zu setzen.

mask ist ein weiteres Bild, das als Maske auf Pixelebene für die Operation verwendet wird. Die Maske sollte ein Bild mit nur schwarzen oder weißen Pixeln sein und dieselbe Größe wie das bearbeitete Bild haben. Nur in der Maske gesetzte Pixel werden beim Flood-Fill ausgewertet.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

draw_event_histogram(array: ndarray, clear: bool = True, brightness: int = 128, contrast: int = 16) Image

Rastert ein Event-ndarray (wie von csi.IOCTL_GENX320_READ_EVENTS gefüllt) auf ein Image zur Visualisierung. Der Bildpuffer muss ein 320x320-GRAYSCALE-Bild sein.

Für jede csi.PIX_ON_EVENT-Zeile wird dem Pixel des Events +contrast hinzugefügt; für jede csi.PIX_OFF_EVENT-Zeile wird dem Pixel -contrast abgezogen. Trigger-Events werden ignoriert. Pixelwerte werden auf 0-255 begrenzt.

clear setzt bei True den Bildpuffer vor dem Zeichnen auf brightness zurück — jedes Einzelbild wird zu einem frischen, rein eventbasierten Render. Setzen Sie es auf False, um Events über mehrere Aufrufe hinweg zu akkumulieren (nützlich für Bewegungsspuren mit Langzeitbelichtung).

brightness steuert die mittlere Graustufen-Grundlinie, auf die der Puffer zurückgesetzt wird, wenn clear True ist. Der Standardwert 128 platziert ON-Events am hellen Ende und OFF-Events am dunklen Ende mit gleichem Spielraum.

contrast steuert, wie stark jedes Event sein Pixel verschiebt — höhere Werte lassen Events hervortreten, auf Kosten einer schnellen Sättigung, wenn viele Events auf demselben Pixel landen.

Maskierungsmethoden

mask_rectangle(x: int, y: int, w: int, h: int) Image

Setzt einen rechteckigen Teil des Bildes auf Null. Werden keine Argumente angegeben, setzt diese Methode die Mitte des Bildes auf Null.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

mask_circle(x: int, y: int, radius: int) Image

Setzt einen kreisförmigen Teil des Bildes auf Null. Werden keine Argumente angegeben, setzt diese Methode die Mitte des Bildes auf Null.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

mask_ellipse(x: int, y: int, radius_x: int, radius_y: int, rotation_angle_in_degrees: int) Image

Setzt einen ellipsenförmigen Teil des Bildes auf Null. Werden keine Argumente angegeben, setzt diese Methode die Mitte des Bildes auf Null.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

Binärmethoden

binary(thresholds: List[Tuple[int, int]], invert: bool = False, zero: bool = False, mask: Image | None = None, to_bitmap: bool = False, copy: bool = False) Image

Setzt alle Pixel im Bild auf Schwarz oder Weiß, je nachdem, ob jedes Pixel innerhalb eines der Schwellenwert-Tupel in thresholds liegt.

thresholds ist eine Liste von (lo, hi)-Tupeln für Graustufenbilder oder (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)-Tupeln für RGB565-Bilder. Vertauschte Min-/Max-Werte werden automatisch korrigiert; fehlende Komponenten erhalten standardmäßig den maximalen Bereich.

invert invertiert die Schwellenwert-Übereinstimmung.

zero setzt bei True die per Schwellenwert erfassten Pixel auf Null und lässt die anderen unberührt.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

to_bitmap konvertiert bei True die Bilddaten in eine Bitmap mit 1 Bit pro Pixel. Bei sehr kleinen Bildern kann dies copy=True erfordern.

copy gibt bei True ein neues Bild auf dem Heap zurück, statt das Quellbild zu verändern.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

invert() Image

Invertiert alle Pixelwerte im Bild (jedes Pixel wird zu 255 - pixel bei 8-Bit-Kanälen).

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

b_and(image: Image, mask: Image | None = None) Image

Verknüpft dieses Bild logisch per AND mit einem anderen Bild.

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

b_nand(image: Image, mask: Image | None = None) Image

Verknüpft dieses Bild logisch per NAND mit einem anderen Bild.

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

b_or(image: Image, mask: Image | None = None) Image

Verknüpft dieses Bild logisch per OR mit einem anderen Bild.

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

b_nor(image: Image, mask: Image | None = None) Image

Verknüpft dieses Bild logisch per NOR mit einem anderen Bild.

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

b_xor(image: Image, mask: Image | None = None) Image

Verknüpft dieses Bild logisch per XOR mit einem anderen Bild.

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

b_xnor(image: Image, mask: Image | None = None) Image

Verknüpft dieses Bild logisch per XNOR mit einem anderen Bild.

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

ISP-Methoden

awb(max: bool = False) Image

Führt einen automatischen Weißabgleich auf dem Bild mit dem Gray-World-Algorithmus durch. Arbeitet auf rohen Bayer- oder RGB565-Bildern. Hat keine Wirkung auf Binär-/Graustufenbilder.

max verwendet bei True stattdessen den White-Patch-Algorithmus.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten oder YUV-Bildern nicht unterstützt.

ccm(matrix: List[List[float]]) Image

Multipliziert die übergebene Gleitkomma-Farbkorrekturmatrix mit dem Bild. Matrizen dürfen 3x3 oder 3x4 sein (mit Offset-Spalte), in Form einer verschachtelten Liste oder einer flachen Liste:

[[rr, rg, rb], [gr, gg, gb], [br, bg, bb]]
[[rr, rg, rb, ro], [gr, gg, gb, go], [br, bg, bb, bo]]
[rr, rg, rb, ro, gr, gg, gb, go, br, bg, bb, bo]

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

gamma(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image

Passt Gamma, Kontrast und Helligkeit des Bildes an.

gamma wendet nach der Normalisierung pow(pixel, 1/gamma) an. Werte größer als 1.0 hellen auf; kleiner als 1.0 verdunkeln.

contrast wendet nach der Normalisierung pixel * contrast an.

brightness wendet nach der Normalisierung pixel + brightness an.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten oder Bayer-/YUV-Bildern nicht unterstützt.

gamma_corr(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image

Alias für Image.gamma.

Mathematikmethoden

negate() Image

Alias für Image.invert.

replace(image: Image | None = None, **kwargs) Image

Alias für Image.draw_image(). Ersetzt dieses Bild durch image (oder transformiert dieses Bild an Ort und Stelle, falls image weggelassen wird) unter Verwendung der Standard-draw_image-Schlüsselwortargumente. Das transform-Argument ist ein 3x3-ndarray, das eine perspektivische Transformation beschreibt (nur auf OpenMV-Kameras mit aktiviertem ULAB unterstützt).

assign(image: Image | None = None, **kwargs) Image

Alias für Image.replace().

set(image: Image | None = None, **kwargs) Image

Alias für Image.replace().

add(image: Image, mask: Image | None = None) Image

Addiert ein Bild pixelweise zu diesem.

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

sub(image: Image, mask: Image | None = None) Image

Subtrahiert image pixelweise von diesem Bild (self - image).

image kann entweder ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Diese Methode akzeptiert außerdem den vollständigen Satz von Image.draw_image()-Schlüsselwortargumenten (x, y, x_scale, y_scale, roi, rgb_channel, alpha, color_palette, alpha_palette, hint, transform).

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

rsub(image: Image, mask: Image | None = None) Image

Umgekehrte Subtraktion: ersetzt dieses Bild pixelweise durch image - self. Ansonsten identisch mit Image.sub().

min(image: Image, mask: Image | None = None) Image

Gibt das pixelweise Minimum-Bild zweier Bilder zurück.

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

max(image: Image, mask: Image | None = None) Image

Gibt das pixelweise Maximum-Bild zweier Bilder zurück.

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

difference(image: Image, mask: Image | None = None) Image

Gibt das Bild der absoluten Differenz zwischen zwei Bildern zurück (z. B. ||a-b||).

image kann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

blend(image: Image, x: int = 0, y: int = 0, alpha: int = 128, mask: Image | None = None, **kwargs) Image

Alias für Image.draw_image(). Blendet image per Alpha-Blending in dieses Bild ein. alpha ist eine Ganzzahl von 0-256; Werte näher an 256 bevorzugen das Quellbild. Akzeptiert alle Image.draw_image()-Schlüsselwortargumente.

histeq(adaptive: bool = False, clip_limit: float = -1, mask: Image | None = None) Image

Führt eine Histogrammausgleichung auf dem Bild durch, um Kontrast und Helligkeit zu normalisieren.

adaptive führt bei True eine adaptive Histogrammausgleichung durch (langsamer, aber im Allgemeinen besser).

clip_limit begrenzt den Kontrast in der adaptiven Variante (ein kleiner Wert wie 10 erzeugt gute CLAHE-Ergebnisse).

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

Filtermethoden

erode(size: int, threshold: int | None = None, mask: Image | None = None) Image

Entfernt Pixel von den Rändern segmentierter Bereiche. Faltet einen ((size*2)+1)x((size*2)+1)-Kernel über das Bild und löscht das mittlere Pixel, wenn mehr als threshold Nachbarn gelöscht sind (verhält sich wie eine Standard-Erosion, falls threshold None ist).

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

dilate(size: int, threshold: int | None = None, mask: Image | None = None) Image

Fügt Pixel an den Rändern segmentierter Bereiche hinzu. Faltet einen ((size*2)+1)x((size*2)+1)-Kernel über das Bild und setzt das mittlere Pixel, wenn mehr als threshold Nachbarn gesetzt sind (verhält sich wie eine Standard-Dilatation, falls threshold None ist).

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

open(size: int, threshold: int | None = None, mask: Image | None = None) Image

Führt eine Erosion gefolgt von einer Dilatation durch. Siehe Image.erode() und Image.dilate().

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

close(size: int, threshold: int | None = None, mask: Image | None = None) Image

Führt eine Dilatation gefolgt von einer Erosion durch. Siehe Image.dilate() und Image.erode().

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

top_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image

Gibt die Bilddifferenz zwischen dem Bild und dem mit Image.open() bearbeiteten Bild zurück.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

black_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image

Gibt die Bilddifferenz zwischen dem Bild und dem mit Image.close() bearbeiteten Bild zurück.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

mean(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Standard-Mittelwert-Weichzeichnungsfilter mit einem Box-Filter.

size ist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.

threshold wendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen. offset verschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger). invert invertiert die Binärausgabe.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

median(size: int, percentile: float | None = 0.5, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Führt einen Perzentilfilter auf dem Bild aus (standardmäßig Median).

size ist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.

percentile ist das aus jedem Kernel auszuwählende Perzentil (0 = Min, 0.5 = Median, 1.0 = Max). Standardmäßig 0.5.

threshold wendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen. offset verschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger). invert invertiert die Binärausgabe.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

mode(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Ersetzt jedes Pixel durch den Modalwert seiner Nachbarn. Kann aufgrund der nichtlinearen Operation Artefakte an RGB-Bildkanten erzeugen.

size ist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.

threshold wendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen. offset verschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger). invert invertiert die Binärausgabe.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

midpoint(size: int, bias: float | None = 0.5, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Führt den Mittelpunktfilter auf dem Bild aus. Dieser Filter findet den Mittelpunkt ((max-min)/2) jeder Pixelnachbarschaft im Bild.

size ist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.

bias steuert die Min-/Max-Mischung. 0 für reine Min-Filterung, 1.0 für reine Max-Filterung. Mit bias können Sie das Bild min/max-filtern.

threshold wendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen. offset verschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger). invert invertiert die Binärausgabe.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

morph(size: int, kernel: list, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Faltet das Bild mit einem beliebigen Filterkernel.

size steuert die Kernelgröße, die ((size*2)+1)x((size*2)+1) Elemente betragen muss.

kernel ist der zu faltende Kernel, als flache 1D-Liste/-Tupel mit ((size*2)+1)*((size*2)+1) Elementen oder als 2D-Liste/-Tupel mit ((size*2)+1) Zeilen zu je ((size*2)+1) Elementen.

mul ist ein multiplikativer Kontrast-Skalierungsfaktor (Standard 1.0).

add ist ein additiver Helligkeits-Offset (Standard 0.0).

threshold wendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen. offset verschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger). invert invertiert die Binärausgabe.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

gaussian(size: int, unsharp: bool | None = False, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Faltet das Bild mit einem glättenden Gauß-Kernel.

size ist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.

unsharp führt bei True eine Unschärfemaskierung durch (schärft Kanten) statt eines einfachen Gauß-Filters.

mul ist ein multiplikativer Kontrast-Skalierungsfaktor (Standard 1.0).

add ist ein additiver Helligkeits-Offset (Standard 0.0).

threshold wendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen. offset verschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger). invert invertiert die Binärausgabe.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

laplacian(size: int, sharpen: bool | None = False, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Faltet das Bild mit einem kantenerkennenden Laplace-Kernel.

size ist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.

sharpen schärft bei True das Bild, statt die rohe, nicht per Schwellenwert verarbeitete Kantenantwort auszugeben.

mul ist ein multiplikativer Kontrast-Skalierungsfaktor (Standard 1.0).

add ist ein additiver Helligkeits-Offset (Standard 0.0).

threshold wendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen. offset verschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger). invert invertiert die Binärausgabe.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

bilateral(size: int, color_sigma: float | None = 0.1, space_sigma: float | None = 1.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Faltet das Bild mit einem bilateralen Filter (kantenerhaltende Glättung).

size ist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.

color_sigma steuert die Farbübereinstimmungstoleranz; größere Werte erzeugen mehr Farbverwischung.

space_sigma steuert die räumliche Weichzeichnung; größere Werte erzeugen mehr Pixelweichzeichnung.

threshold wendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen. offset verschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger). invert invertiert die Binärausgabe.

mask ist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-/YUV-Bildern nicht unterstützt.

Geometrische Methoden

linpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image

Reprojiziert ein Bild von kartesischen Koordinaten in lineare Polarkoordinaten.

Setzen Sie reverse=True, um in die entgegengesetzte Richtung zu reprojizieren.

x und y geben die Mittelpunktkoordinate der Transformation in Bildpixeln an. Falls x None ist (der Standard), wird es auf die halbe Bildbreite gesetzt; ebenso ist y standardmäßig die halbe Bildhöhe.

Die lineare Polar-Reprojektion verwandelt die Rotation eines Bildes in eine x-Translation.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

logpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image

Reprojiziert ein Bild von kartesischen Koordinaten in logarithmische Polarkoordinaten.

Setzen Sie reverse=True, um in die entgegengesetzte Richtung zu reprojizieren.

x und y geben die Mittelpunktkoordinate der Transformation in Bildpixeln an. Falls x None ist (der Standard), wird es auf die halbe Bildbreite gesetzt; ebenso ist y standardmäßig die halbe Bildhöhe.

Die logarithmische Polar-Reprojektion verwandelt die Rotation eines Bildes in eine x-Translation und Skalierung/Zoom in eine y-Translation.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

lens_corr(strength: float = 1.8, zoom: float = 1.0, x_corr: float = 0.0, y_corr: float = 0.0) Image

Führt eine Objektivkorrektur durch, um das Bild aufgrund der Objektivverzerrung zu entzerren.

strength ist ein float, der definiert, wie stark das Bild entzerrt werden soll. Probieren Sie standardmäßig 1.8 aus und erhöhen oder verringern Sie den Wert von dort, bis das Bild gut aussieht.

zoom ist der Betrag, um den in das Bild hineingezoomt werden soll. Standardmäßig 1.0.

x_corr Gleitkomma-Pixel-Offset vom Mittelpunkt. Kann negativ oder positiv sein.

y_corr Gleitkomma-Pixel-Offset vom Mittelpunkt. Kann negativ oder positiv sein.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

rotation_corr(x_rotation: float = 0.0, y_rotation: float = 0.0, z_rotation: float = 0.0, x_translation: float = 0.0, y_translation: float = 0.0, zoom: float = 1.0, fov: float = 60.0, corners: List[Tuple[int, int]] | None = None) Image

Korrigiert Perspektivprobleme im Bild durch eine 3D-Rotation des Framebuffers.

x_rotation ist die Anzahl der Grad, um die das Bild im Framebuffer um die x-Achse gedreht wird (d. h. dies dreht das Bild nach oben und unten).

y_rotation ist die Anzahl der Grad, um die das Bild im Framebuffer um die y-Achse gedreht wird (d. h. dies dreht das Bild nach links und rechts).

z_rotation ist die Anzahl der Grad, um die das Bild im Framebuffer um die z-Achse gedreht wird (d. h. dies dreht das Bild an Ort und Stelle).

x_translation ist die Anzahl der Einheiten, um das Bild nach der Rotation nach links oder rechts zu verschieben. Da diese Translation im 3D-Raum angewendet wird, sind die Einheiten keine Pixel…

y_translation ist die Anzahl der Einheiten, um das Bild nach der Rotation nach oben oder unten zu verschieben. Da diese Translation im 3D-Raum angewendet wird, sind die Einheiten keine Pixel…

zoom ist der Betrag, um den in das Bild hineingezoomt werden soll. Standardmäßig 1.0.

fov ist das Sichtfeld, das für die interne 2D->3D-Projektion verwendet wird. Wenn sich fov 0 nähert, wird das Bild im Unendlichen platziert; wenn es sich 180 nähert, wird das Bild innerhalb des Viewports platziert.

corners ist eine Liste von vier (x, y)-Tupeln, die verwendet wird, um eine 4-Punkt-Homographie zu erstellen, die die Ecken vor Anwendung der 3D-Rotation auf (0, 0), (image_width-1, 0), (image_width-1, image_height-1) und (0, image_height-1) abbildet. Nützlich für Vogelperspektiv-Transformationen.

Gibt das Bildobjekt zurück, sodass Sie mit der .-Notation eine weitere Methode aufrufen können.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

Get-Methoden

get_similarity(image: Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, dssim: bool = False) Similarity

Berechnet die Ähnlichkeit zwischen zwei Bildern mithilfe des Structural Similarity Index (SSIM). SSIM reicht von -1 (entgegengesetzt) bis 1 (identisch). Gibt ein image.similarity-Objekt zurück.

image ist das zu vergleichende Bild (ein Bildobjekt oder ein Pfad-String, z. B. "test.jpg").

x, y, x_scale, y_scale, roi, rgb_channel, alpha, color_palette, alpha_palette, hint und transform akzeptieren dieselben Werte wie Image.draw_image().

dssim gibt bei True stattdessen den Structural Dissimilarity Index (DSSIM) zurück, wobei 0 identisch und 1 völlig verschieden bedeutet.

get_histogram(thresholds: List[Tuple[int, int]] | None = None, invert: bool = False, roi: Tuple[int, int, int, int] | None = None, bins: int = -1, l_bins: int = -1, a_bins: int = -1, b_bins: int = -1, difference: Image | None = None) histogram

Berechnet das normalisierte Histogramm über alle Farbkanäle für eine roi und gibt ein image.histogram-Objekt zurück. Auch verfügbar als Image.get_hist() oder Image.histogram().

thresholds ist eine Liste von (lo, hi)-Tupeln für Graustufenbilder oder (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)-Tupeln für RGB565-Bilder. Falls übergeben, wird das Histogramm nur über Pixel innerhalb der Schwellenwerte berechnet.

invert invertiert die Schwellenwert-Übereinstimmung.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

bins (Graustufen) oder l_bins/a_bins/b_bins (RGB565) legen die Anzahl der Histogramm-Bins pro Kanal fest. Muss größer als 2 sein. Standardmäßig die maximale Anzahl Bins pro Kanal.

difference kann auf ein Bildobjekt gesetzt werden, um auf der Differenz zwischen dem aktuellen Bild und diesem Bild zu operieren, ohne einen zusätzlichen Puffer.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

get_statistics(thresholds: List[Tuple[int, int]] | None = None, invert: bool = False, roi: Tuple[int, int, int, int] | None = None, bins: int = -1, l_bins: int = -1, a_bins: int = -1, b_bins: int = -1, difference: Image | None = None) statistics

Berechnet Mittelwert, Median, Modalwert, Standardabweichung, Min, Max, unteres Quartil und oberes Quartil über alle Farbkanäle für eine roi und gibt ein image.statistics-Objekt zurück. Auch verfügbar als Image.get_stats() oder Image.statistics().

thresholds ist eine Liste von (lo, hi)-Tupeln für Graustufenbilder oder (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)-Tupeln für RGB565-Bilder. Falls übergeben, werden die Statistiken nur über Pixel innerhalb der Schwellenwerte berechnet.

invert invertiert die Schwellenwert-Übereinstimmung.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

bins (Graustufen) oder l_bins/a_bins/b_bins (RGB565) legen die Anzahl der Histogramm-Bins pro Kanal fest. Muss größer als 2 sein. Standardmäßig die maximale Anzahl Bins pro Kanal.

difference kann auf ein Bildobjekt gesetzt werden, um auf der Differenz zwischen dem aktuellen Bild und diesem Bild zu operieren, ohne einen zusätzlichen Puffer.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

get_regression(thresholds: List[Tuple[int, int]], invert: bool = False, roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, area_threshold: int = 10, pixels_threshold: int = 10, target_size: Tuple[int, int] = (80, 60)) line

Berechnet eine lineare Regression (Theil-Sen) über alle per Schwellenwert erfassten Pixel im Bild. Gibt ein image.line-Objekt zurück oder None, falls keine Linie gefunden wurde.

thresholds ist eine Liste von (lo, hi)-Tupeln für Graustufenbilder oder (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)-Tupeln für RGB565-Bilder.

invert invertiert die Schwellenwert-Übereinstimmung.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

x_stride und y_stride steuern, wie viele Pixel beim Auswerten des Bildes übersprungen werden.

area_threshold minimale Begrenzungsrahmenfläche; kleinere Ergebnisse geben None zurück.

pixels_threshold minimale Anzahl per Schwellenwert erfasster Pixel; kleinere Ergebnisse geben None zurück.

target_size ist ein (w, h)-Tupel. Die ROI wird per Flächenskalierung verkleinert, um in diese Größe zu passen, bevor der O(N^2)-Algorithmus ausgeführt wird. Standardmäßig (80, 60).

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

Erkennungsmethoden

find_blobs(thresholds: List[Tuple[int, int]], invert: bool = False, roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, area_threshold: int = 10, pixels_threshold: int = 10, merge: bool = False, margin: int = 0, threshold_cb: Callable | None = None, merge_cb: Callable | None = None, x_hist_bins_max: int = 0, y_hist_bins_max: int = 0) List[blob]

Findet alle Blobs (zusammenhängende Pixelregionen, die einen Schwellenwerttest bestehen) im Bild und gibt eine Liste von image.blob-Objekten zurück.

thresholds ist eine Liste von (lo, hi)-Tupeln für Graustufenbilder oder (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)-Tupeln für RGB565-Bilder (LAB-Kanäle). Es können bis zu 32 Tupel übergeben werden. Vertauschte Min-/Max-Werte werden automatisch korrigiert; fehlende Komponenten erhalten standardmäßig den maximalen Bereich.

invert invertiert die Schwellenwert-Übereinstimmung.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

x_stride und y_stride steuern, wie viele Pixel bei der Suche nach einem Blob übersprungen werden. Erhöhen Sie sie, wenn bekannt ist, dass Blobs groß sind.

area_threshold minimale Begrenzungsrahmenfläche; kleinere Blobs werden herausgefiltert.

pixels_threshold minimale Anzahl per Schwellenwert erfasster Pixel; kleinere Blobs werden herausgefiltert.

merge führt bei True Blobs zusammen, deren Begrenzungsrechtecke sich überschneiden. margin vergrößert/verkleinert die für die Überschneidung verwendeten Begrenzungsrechtecke. Zusammengeführte Blobs verknüpfen ihre code-Bitvektoren per OR (ein Bit pro Schwellenwert).

threshold_cb wird pro Blob nach der Schwellenwertbildung aufgerufen; geben Sie True zum Behalten, False zum Herausfiltern zurück.

merge_cb wird pro Blob-Paar aufgerufen, das zusammengeführt werden soll; geben Sie True zurück, um die Zusammenführung zu erlauben, False, um sie zu verhindern.

x_hist_bins_max füllt bei einem Wert ungleich Null jeden Blob mit einer x_histogram-Projektion mit dieser Anzahl Bins.

y_hist_bins_max füllt bei einem Wert ungleich Null jeden Blob mit einer y_histogram-Projektion mit dieser Anzahl Bins.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

find_lines(roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, threshold: int = 1000, theta_margin: int = 25, rho_margin: int = 25) List[line]

Findet alle unendlichen Linien im Bild mithilfe der Hough-Transformation. Gibt eine Liste von image.line-Objekten zurück.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

x_stride und y_stride steuern, wie viele Pixel während der Hough-Transformation übersprungen werden.

threshold minimale Linienmagnitude (Summe der Sobel-Magnituden entlang der Linie); Linien darunter werden herausgefiltert.

theta_margin und rho_margin steuern das Zusammenführen: Linien innerhalb dieser Schwellenwerte werden zusammengeführt.

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

find_line_segments(roi: Tuple[int, int, int, int] | None = None, merge_distance: int = 0, max_theta_difference: int = 15) List[line]

Findet Liniensegmente im Bild. Gibt eine Liste von image.line-Objekten zurück.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

merge_distance ist die maximale Pixelseparation zwischen zwei Segmenten, damit sie zusammengeführt werden.

max_theta_difference ist die maximale Theta-Differenz in Grad zwischen Segmenten, damit sie zusammengeführt werden.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

find_circles(roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, threshold: int = 2000, x_margin: int = 10, y_margin: int = 10, r_margin: int = 10, r_min: int = 2, r_max: int | None = None, r_step: int = 2) List[circle]

Findet Kreise im Bild mithilfe der Hough-Transformation. Gibt eine Liste von image.circle-Objekten zurück.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

x_stride und y_stride steuern, wie viele Pixel während der Hough-Transformation übersprungen werden.

threshold minimale Kreismagnitude (Summe der Sobel-Magnituden entlang des Kreises); Kreise darunter werden herausgefiltert.

x_margin, y_margin und r_margin steuern das Zusammenführen: Kreise innerhalb dieser Schwellenwerte werden zusammengeführt.

r_min minimaler Kreisradius. Standardmäßig 2.

r_max maximaler Kreisradius. Standardmäßig min(roi.w/2, roi.h/2).

r_step Radius-Schrittweite. Standardmäßig 2.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

find_rects(roi: Tuple[int, int, int, int] | None = None, threshold: int = 1000) List[rect]

Findet Rechtecke im Bild mithilfe des AprilTag-Quad-Erkennungsalgorithmus. Gibt eine Liste von image.rect-Objekten zurück.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

threshold minimale Kantenmagnitude (Summe der Sobel-Magnituden entlang der Rechteckkanten); Rechtecke darunter werden herausgefiltert.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

find_qrcodes(roi: Tuple[int, int, int, int] | None = None) List[qrcode]

Findet alle QR-Codes innerhalb der roi und gibt eine Liste von image.qrcode-Objekten zurück.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

find_apriltags(roi: Tuple[int, int, int, int] | None = None, families: int = TAG36H11, fx: float | None = None, fy: float | None = None, cx: float | None = None, cy: float | None = None) List[apriltag]

Findet alle AprilTags innerhalb der roi und gibt eine Liste von image.apriltag-Objekten zurück.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

families ist eine Bitmaske der zu dekodierenden Tag-Familien. Sie ist das logische OR von:

Standardmäßig image.TAG36H11. Die Erkennungszeit skaliert mit der Anzahl der aktivierten Familien.

fx und fy sind die X- und Y-Brennweiten der Kamera in Pixeln.

cx und cy sind der Bildmittelpunkt, typischerweise image.width()/2 und image.height()/2.

Wird bei komprimierten Bildern nicht unterstützt.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

find_datamatrices(roi: Tuple[int, int, int, int] | None = None, effort: int = 200) List[datamatrix]

Findet alle Data Matrices innerhalb der roi und gibt eine Liste von image.datamatrix-Objekten zurück.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

effort steuert, wie viel Zeit für die Suche nach Data-Matrix-Übereinstimmungen aufgewendet wird. Höhere Werte verbessern die Erkennung auf Kosten der Bildrate. Werte unter ~160 erkennen nichts; Werte über ~240 bringen abnehmenden Nutzen. Standardmäßig 200.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

find_barcodes(roi: Tuple[int, int, int, int] | None = None) List[barcode]

Findet alle 1D-Barcodes innerhalb der roi und gibt eine Liste von image.barcode-Objekten zurück. Scannt sowohl horizontal als auch vertikal.

Unterstützte Barcode-Typen: image.EAN2, image.EAN5, image.EAN8, image.UPCE, image.ISBN10, image.UPCA, image.EAN13, image.ISBN13, image.I25, image.DATABAR (RSS-14), image.DATABAR_EXP (RSS-Expanded), image.CODABAR, image.CODE39, image.PDF417, image.CODE93, image.CODE128.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

find_displacement(template: Image, roi: Tuple[int, int, int, int] | None = None, template_roi: Tuple[int, int, int, int] | None = None, logpolar: bool = False, fix_rotation_scale: bool = False) displacement

Findet den Translations-Offset dieses Bildes gegenüber template mithilfe der Phasenkorrelation. Gibt ein image.displacement-Objekt zurück.

roi ist das Interessensbereich-Rechteck (x, y, w, h). Standardmäßig das Bildrechteck.

template_roi ist der Interessensbereich des Templates. Standardmäßig das Rechteck des Template-Bildes. roi und template_roi müssen dieselbe Breite und Höhe haben.

logpolar gibt bei True die Rotations-/Skalenänderung statt der x/y-Translation zurück.

fix_rotation_scale berechnet bei True die Verschiebung nach Ausrichtung von Rotation und Skalierung (nur sinnvoll, wenn logpolar=False).

Bemerkung

Verwenden Sie diese Methode für Bildgrößen, die Zweierpotenzen sind (z. B. sensor.B64X64).

Wird bei komprimierten Bildern oder Bayer-Bildern nicht unterstützt. Nicht auf der OpenMV Cam M4 verfügbar.

find_template(template: Image, threshold: float, roi: Tuple[int, int, int, int] | None = None, step: int = 2, search: int = SEARCH_EX) Tuple[int, int, int, int] | None

Versucht, die erste Position im Bild zu finden, an der template mittels normalisierter Kreuzkorrelation übereinstimmt. Gibt ein Begrenzungsrahmen-Tupel (x, y, w, h) oder None zurück.

template ist ein Graustufenbild, das mit diesem Bild abgeglichen werden soll.

threshold ist ein Wert (0.0-1.0). Höhere Werte reduzieren Fehlerkennungen und Erkennungen; niedrigere Werte bewirken das Gegenteil.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

step ist die Anzahl der bei der Suche zu überspringenden Pixel (nur im Modus image.SEARCH_EX verwendet).

search ist image.SEARCH_DS (schnellere Diamantensuche) oder image.SEARCH_EX (erschöpfende Suche).

Funktioniert nur bei Graustufenbildern.

find_features(cascade: Cascade, threshold: float = 0.5, scale: float = 1.5, roi: Tuple[int, int, int, int] | None = None) List[Tuple[int, int, int, int]]

Durchsucht das Bild nach Bereichen, die der übergebenen Haar-Kaskade entsprechen, und gibt eine Liste von Begrenzungsrahmen-Tupeln (x, y, w, h) zurück. Gibt eine leere Liste zurück, falls keine Merkmale gefunden werden.

cascade ist ein Haar-Cascade-Objekt (siehe image.HaarCascade()).

threshold (0.0-1.0). Niedrigere Werte erhöhen die Erkennungsrate und die Fehlerkennungsrate.

scale muss größer als 1.0 sein. Höhere Werte laufen schneller, erzeugen aber schlechtere Übereinstimmungen.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

find_eye(roi: Tuple[int, int, int, int]) Tuple[int, int]

Sucht nach der Pupille in einem Interessensbereich-Tupel (x, y, w, h) um ein Auge. Gibt die (x, y)-Position der Pupille zurück oder (0, 0), falls keine gefunden wird.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h).

Funktioniert nur bei Graustufenbildern.

find_lbp(roi: Tuple[int, int, int, int]) lbp_descriptor

Extrahiert LBP-Schlüsselpunkte (Local Binary Patterns) aus dem Interessensbereich. Verwenden Sie image.match_descriptor(), um zwei Deskriptoren zu vergleichen.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h).

Funktioniert nur bei Graustufenbildern.

find_keypoints(roi: Tuple[int, int, int, int] | None = None, threshold: int = 20, normalized: bool = False, scale_factor: float = 1.5, max_keypoints: int = 100, corner_detector: int = CORNER_AGAST) kp_descriptor | None

Extrahiert ORB-Schlüsselpunkte aus dem Interessensbereich. Verwenden Sie image.match_descriptor(), um zwei Deskriptoren zu vergleichen. Gibt None zurück, falls keine Schlüsselpunkte gefunden wurden.

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.

threshold (0-255) steuert die Anzahl der extrahierten Ecken. Niedrigere Schwellenwerte erzeugen mehr Ecken. Verwenden Sie ~20 für AGAST, ~60-80 für FAST.

normalized deaktiviert bei True die Schlüsselpunkt-Extraktion in mehreren Auflösungen.

scale_factor muss größer als 1.0 sein. Höhere Werte laufen schneller, erzeugen aber schlechtere Übereinstimmungen.

max_keypoints ist die maximale Anzahl beizubehaltender Schlüsselpunkte.

corner_detector ist image.CORNER_FAST oder image.CORNER_AGAST.

Funktioniert nur bei Graustufenbildern.

find_edges(edge_type: int, threshold: Tuple[int, int] = (100, 200)) Image

Wandelt das Bild in Schwarzweiß um und lässt nur die Kanten als weiße Pixel übrig.

  • image.EDGE_SIMPLE – Einfacher per Schwellenwert verarbeiteter Hochpassfilter-Algorithmus.

  • image.EDGE_CANNY – Canny-Kantenerkennungsalgorithmus.

threshold ist ein Tupel mit zwei Werten, das einen niedrigen und einen hohen Schwellenwert enthält. Sie können die Qualität der Kanten durch Anpassen dieser Werte steuern. Standardmäßig (100, 200).

Funktioniert nur bei Graustufenbildern.

find_hog(roi: Tuple[int, int, int, int] | None = None, size: int = 8) Image

Ersetzt die Pixel in der ROI durch HOG-Linien (Histogram of Oriented Gradients).

roi ist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Falls nicht angegeben, entspricht es dem Bildrechteck. Nur Pixel innerhalb der roi werden bearbeitet.

Funktioniert nur bei Graustufenbildern.

Diese Methode ist auf der OpenMV Cam M4 nicht verfügbar.

stereo_disparity(reversed: bool = False, max_disparity: int = 64, threshold: int = 64) Image

Nimmt ein doppelt breites Graustufenbild, das die Ausgabe zweier nebeneinander angeordneter Kamerasensoren enthält, und ersetzt eine Hälfte durch das Stereodisparitätsbild (jedes Pixel repräsentiert Tiefe). Z. B. übergeben Sie für zwei 320x240-Kameras ein 640x240-Bild.

reversed Standardmäßig wird das linke Bild mit dem rechten verglichen und das rechte Bild ersetzt. Setzen Sie es auf True, um rechts mit links zu vergleichen und das linke Bild zu ersetzen.

max_disparity ist die maximale Distanz (1-255), in der mittels Summe der absoluten Differenzen nach einem passenden Pixelblock gesucht wird. Größere Werte dauern exponentiell länger, erzeugen aber eine höhere Ausgabequalität.

threshold falls die Summe der absoluten Differenzen zwischen zwei Blöcken kleiner oder gleich diesem Schwellenwert ist, gelten sie als übereinstimmend.

Führt eine selektive Suche auf dem Bild aus und gibt eine Liste von Begrenzungsrahmen-Tupeln (x, y, w, h) von Objektvorschlägen zurück.

threshold ist der Segmentierungs-Schwellenwert; höhere Werte erzeugen weniger/größere Regionen.

size ist die minimale Regionsgröße nach dem Zusammenführen.

a1, a2, a3 sind die Ähnlichkeitsgewichte für Farbe/Textur/Größe, die beim Zusammenführen von Regionen verwendet werden.