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()oderto_rgb565().
Woher Image-Objekte stammen¶
Es gibt vier Möglichkeiten, ein Image zu erhalten:
Aus dem Kamera-Framebuffer –
csi.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, fallscopy_to_fb=True).Aus einem ndarray – übergeben Sie ein
(h, w)- oder(h, w, 3)-float32-Array. Die Pixel werden von0.0 -- 255.0nach 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 einbuffer=-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¶
Indizierung –
img[i]liest Pixeli(linear, zeilenweise).img[i] = valueschreibt 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änge –
len(img)gibt die Anzahl der Pixel für unkomprimierte Formate oder die Byte-Anzahl für komprimierte Formate zurück.Iteration –
for px in img: ...durchläuft das Pixel-Array in derselben Reihenfolge wie die[]-Indizierung.Bytes-artig –
Imagestellt das Lesepuffer-Protokoll bereit, sodass Sie es direkt an alles übergeben können, das einbytes/bytearrayakzeptiert (z. B.uart.write(img),socket.send(img),hashlib.sha256(img)). Verwenden Sie stattdessenbytearray(), um eine Lese-/Schreibansicht zu erhalten.
Hinweis-Flags¶
Viele Image-Methoden akzeptieren ein hint-Argument, das ein logisches OR der folgenden Flags ist:
image.AREA: Verwendet beim Verkleinern Flächenskalierung statt der standardmäßigen Nächste-Nachbar-Methode.
image.BILINEAR: Verwendet bilineare Skalierung statt der standardmäßigen Nächste-Nachbar-Skalierung.
image.BICUBIC: Verwendet bikubische Skalierung statt der standardmäßigen Nächste-Nachbar-Skalierung.
image.CENTER: Zentriert das gezeichnete Bild auf dem Display. Dies wird nach der Skalierung angewendet.
image.HMIRROR: Spiegelt das Bild horizontal.
image.VFLIP: Kippt das Bild vertikal.
image.TRANSPOSE: Transponiert das Bild (vertauscht x/y).
image.EXTRACT_RGB_CHANNEL_FIRST: Führt die rgb_channel-Extraktion vor der Skalierung durch.
image.APPLY_COLOR_PALETTE_FIRST: Wendet die Farbpalette vor der Skalierung an.
image.SCALE_ASPECT_KEEP: Skaliert das gezeichnete Bild so, dass es in das Display passt.
image.SCALE_ASPECT_EXPAND: Skaliert das gezeichnete Bild so, dass es das Display ausfüllt (führt zu Beschneidung).
image.SCALE_ASPECT_IGNORE: Skaliert das gezeichnete Bild so, dass es das Display ausfüllt (führt zu Verzerrung).
image.ROTATE_90: Dreht das Bild um 90 Grad (dies ist einfach VFLIP | TRANSPOSE).
image.ROTATE_180: Dreht das Bild um 180 Grad (dies ist einfach HMIRROR | VFLIP).
image.ROTATE_270: Dreht das Bild um 270 Grad (dies ist einfach HMIRROR | TRANSPOSE).
image.BLACK_BACKGROUND: Geht davon aus, dass das Hintergrundbild, auf das gezeichnet wird, schwarz ist, was das Blending beschleunigt. Wird nur vonImage.draw_image()undImage.get_similarity()unterstützt.
- 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
argein String ist, erstellt dies ein neues Bildobjekt aus einer Datei am Pfadarg. Unterstützt das Laden von bmp/pgm/ppm/jpg/jpeg/png-Bilddateien von der Festplatte. Fallscopy_to_fbtrue ist, wird das Bild in den Framebuffer kopiert, statt auf dem Heap allokiert zu werden.Wenn
argeinndarrayist, erstellt dies ein neues Bildobjekt aus demndarray.ndarray-Objekte mit der Form(w, h)werden als Graustufenbilder behandelt,(w, h, 3)als RGB565-Bilder. Derzeit werden nur float32-ndarraysunterstützt. Wenn Sie auf diese Weise ein Bild erstellen und einbuffer-Argument übergeben, wird dieses zum Speichern der Bilddaten verwendet, statt Speicher auf dem Heap zu allokieren. Fallscopy_to_fbtrue ist, wird das Bild in den Framebuffer kopiert, statt auf dem Heap oder imbufferallokiert zu werden.Wenn
argeinintist, wird es als Breite eines neuen Bildes betrachtet, und einheight-Wert sowie einformat-Wert müssen folgen, um ein neues leeres Bildobjekt zu erstellen.formatkann ein beliebiger Bild-Pixformat-Wert wieimage.GRAYSCALEsein. Das Bild wird mit lauter Nullen initialisiert. Beachten Sie, dass für komprimierte Bildformate einbuffer-Wert erwartet wird.bufferwird auf diese Weise als Quelle der Bilddaten zur Bilderstellung betrachtet. Bei Verwendung mitcopy_to_fbwerden die Daten ausbufferin den Framebuffer kopiert. Wenn Sie ein JPEG-Bild aus einem JPEG-bytes()- oder -bytearray()-Objekt erstellen möchten, können Siewidth,height,image.JPEGfür das JPEG übergeben undbufferauf 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, oderimage[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¶
- format() int¶
Gibt
image.GRAYSCALEfür Graustufenbilder,image.RGB565für RGB565-Bilder,image.BAYERfür Bayer-Pattern-Bilder undimage.JPEGfür JPEG-Bilder 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 einbytes-artiges Objekt erfordert. Dies ist ein Nur-Lese-Zugriff. Rufen Siebytearray()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
xoderyaußerhalb des Bildes liegt.xundykönnen entweder einzeln oder als Tupel übergeben werden.rgbtuplebewirkt 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()undImage.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 gesetztemrgbtupleaufrufen, debayertImage.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 Wertpixel.Gibt das Bildobjekt zurück, sodass Sie mit der
.-Notation eine weitere Methode aufrufen können.xundykönnen entweder einzeln oder als Tupel übergeben werden.pixelkann 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()undImage.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.dtypekannb,Boderfsein, um ein vorzeichenbehaftetes 8-Bit-, ein vorzeichenloses 8-Bit- oder ein 32-Bit-Gleitkomma-ndarrayzu 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 nachdtypeauf jeden Kanal angewendet. Beachten Sie, dassdtypeauch die Ganzzahlwerte (z. B. viaord()) vonb,Bbzw.fakzeptiert.bufferist, falls nichtNone, einbytearray-Objekt, das als Puffer für dasndarrayverwendet wird. BeiNonewird ein neuer Puffer auf dem Heap allokiert, um diendarray-Bilddaten zu speichern. Sie können dasbuffer-Argument verwenden, um dasndarraydirekt in einem vorab allokierten Puffer zu allokieren und so eine Heap-Allokation und einen Kopiervorgang einzusparen.Das zurückgegebene
ndarrayhat 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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- undsensor.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ürmask-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 aufsensor.GRAYSCALE- odersensor.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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone,image.PALETTE_DEPTHoder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des jeweiligen Quellbildes angewendet wird. Dies wird nach derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.qualitysteuert die JPEG-Bildkompressionsqualität. Der Wert kann zwischen 0 und 100 liegen.subsamplingkann sein:image.JPEG_SUBSAMPLING_AUTO: Verwendet das beste Subsampling für das Bild basierend auf der Qualität.image.JPEG_SUBSAMPLING_444: Verwendet 4:4:4-Subsampling.image.JPEG_SUBSAMPLING_422: Verwendet 4:2:2-Subsampling.image.JPEG_SUBSAMPLING_420: Verwendet 4:2:0-Subsampling.
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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. Dies hat keine besondere Wirkung, wenn sich das Bild bereits im Framebuffer befindet.qualitysteuert die JPEG-Bildkompressionsqualität. Der Wert kann zwischen 0 und 100 liegen.subsamplingkann sein:image.JPEG_SUBSAMPLING_AUTO: Verwendet das beste Subsampling für das Bild basierend auf der Qualität.image.JPEG_SUBSAMPLING_444: Verwendet 4:4:4-Subsampling.image.JPEG_SUBSAMPLING_422: Verwendet 4:2:2-Subsampling.image.JPEG_SUBSAMPLING_420: Verwendet 4:2:0-Subsampling.
Gibt das Bildobjekt zurück, sodass Sie mit der
.-Notation eine weitere Methode aufrufen können.Bemerkung
Image.compressist ein Alias fürImage.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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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_fblä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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (ausgenommenimage.BLACK_BACKGROUND, das hier nicht unterstützt wird).transformist 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.copyerstellt bei True eine tiefe Kopie des konvertierten Bildes auf dem Heap, statt das Originalbild an Ort und Stelle zu konvertieren.copy_to_fblädt das Bild bei True direkt in den Framebuffer.copy_to_fbhat Vorrang vorcopy. 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.scaleist ein Alias fürImage.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.
roiist 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.qualityist 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.
Zeichenmethoden¶
- clear(mask: Image | None = None) Image¶
Setzt alle Pixel im Bild auf Null (sehr schnell).
maskist 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.
colorist 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.thicknesssteuert, 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.
colorist 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.thicknesssteuert, wie dick die Linien in Pixeln sind.Setzen Sie
fillauf 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.
colorist 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.thicknesssteuert, wie dick die Kanten in Pixeln sind.Setzen Sie
fillauf 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.
colorist 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.thicknesssteuert, wie dick die Kanten in Pixeln sind.Setzen Sie
fillauf 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.
textist ein String, der in das Bild geschrieben werden soll. Die Zeilenenden\n,\rund\r\nbewegen den Cursor in die nächste Zeile.colorist 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.scalekann 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_spacingermöglicht es Ihnen, x-Pixel zwischen Zeichen hinzuzufügen (falls positiv) oder abzuziehen (falls negativ).y_spacingermöglicht es Ihnen, y-Pixel zwischen Zeichen hinzuzufügen (falls positiv) oder abzuziehen (falls negativ) (bei mehrzeiligem Text).mono_spaceist 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_rotationkann 0, 90, 180, 270 sein, um jedes Zeichen im String um diesen Betrag zu drehen.char_hmirrorspiegelt bei True alle Zeichen im String horizontal.char_vflipkippt bei True alle Zeichen im String vertikal.string_rotationkann 0, 90, 180, 270 sein, um den String um diesen Betrag zu drehen.string_hmirrorspiegelt bei True den String horizontal.string_vflipkippt 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.
colorist 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.sizesteuert, wie lang die Linien des Kreuzes verlaufen.thicknesssteuert, 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.
colorist 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.thicknesssteuert, 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.
detectionist ein 6-Tupel(rx, ry, rw, rh, cx, cy), das einen Begrenzungsrahmen und einen Schwerpunkt beschreibt (typischerweise von NN- oder Farbverfolgungscode zurückgegeben).color1ist die Rechteckfarbe undcolor2ist die Farbe des Schwerpunktkreuzes.sizeist die Größe des Schwerpunktkreuzes,thicknesssteuert die Umrissbreite, undfillfüllt das Rechteck.labelwird, falls angegeben, in der Nähe des Rechtecks gezeichnet, versetzt umlabel_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.cornerszurückgegeben wird. Corners ist ein Tupel mit vier Werten aus zweiwertigen x/y-Tupeln. Z. B. [(x1,y1),(x2,y2),(x3,y3),(x4,y4)].colorist 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.sizebewirkt bei einem Wert größer als 0, dass die Ecken als Kreise mit Radiussizegezeichnet werden.thicknesssteuert, wie dick die Linie in Pixeln ist.Setzen Sie
fillauf 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_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt. Beachten Sie, dassy_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt. Beachten Sie, dassx_scale, falls nicht angegeben,x_scaleentspricht, um das Seitenverhältnis beizubehalten.roiist 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_channelist 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 Beispielrgb_channel=1übergeben, wird der grüne Kanal des RGB565-Quellbildes extrahiert und in Graustufen auf das Zielbild gezeichnet.alphasteuert, 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_palettekann, falls nichtNone, 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 derrgb_channel-Extraktion angewendet, falls verwendet.alpha_palettekann, falls nichtNone, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird, die denalpha-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 derrgb_channel-Extraktion angewendet, falls verwendet.hintist ein logisches OR der unter Hint flags aufgeführten Flags (einschließlichimage.BLACK_BACKGROUND, das hier unterstützt wird).transformist 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.
colorist 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.sizesteuert, wie groß die Schlüsselpunkte sind.thicknesssteuert, wie dick die Linie in Pixeln ist.Setzen Sie
fillauf 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_thresholdsteuert, wie stark sich ein beliebiges Pixel im Füllbereich vom ursprünglichen Startpixel unterscheiden darf.floating_thresholdsteuert, wie stark sich ein beliebiges Pixel im Füllbereich von beliebigen Nachbarpixeln unterscheiden darf.colorist 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
invertals True, um alles außerhalb des per Flood-Fill verbundenen Bereichs neu einzufärben.Übergeben Sie
clear_backgroundals True, um die übrigen Pixel, die der Flood-Fill nicht neu eingefärbt hat, auf Null zu setzen.maskist 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_EVENTSgefüllt) auf einImagezur Visualisierung. Der Bildpuffer muss ein 320x320-GRAYSCALE-Bild sein.Für jede
csi.PIX_ON_EVENT-Zeile wird dem Pixel des Events+contrasthinzugefügt; für jedecsi.PIX_OFF_EVENT-Zeile wird dem Pixel-contrastabgezogen. Trigger-Events werden ignoriert. Pixelwerte werden auf 0-255 begrenzt.clearsetzt bei True den Bildpuffer vor dem Zeichnen aufbrightnesszurü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).brightnesssteuert die mittlere Graustufen-Grundlinie, auf die der Puffer zurückgesetzt wird, wennclearTrue ist. Der Standardwert 128 platziert ON-Events am hellen Ende und OFF-Events am dunklen Ende mit gleichem Spielraum.contraststeuert, 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
thresholdsliegt.thresholdsist 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.invertinvertiert die Schwellenwert-Übereinstimmung.zerosetzt bei True die per Schwellenwert erfassten Pixel auf Null und lässt die anderen unberührt.maskist ein Binärbild, das als Maske auf Pixelebene verwendet wird; nur in der Maske gesetzte Pixel werden verändert.to_bitmapkonvertiert bei True die Bilddaten in eine Bitmap mit 1 Bit pro Pixel. Bei sehr kleinen Bildern kann diescopy=Trueerfordern.copygibt 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 - pixelbei 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.
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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.
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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.
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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.
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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.
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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.
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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.
maxverwendet 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.
gammawendet nach der Normalisierungpow(pixel, 1/gamma)an. Werte größer als 1.0 hellen auf; kleiner als 1.0 verdunkeln.contrastwendet nach der Normalisierungpixel * contrastan.brightnesswendet nach der Normalisierungpixel + brightnessan.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.
Mathematikmethoden¶
- negate() Image¶
Alias für
Image.invert.
- replace(image: Image | None = None, **kwargs) Image¶
Alias für
Image.draw_image(). Ersetzt dieses Bild durchimage(oder transformiert dieses Bild an Ort und Stelle, fallsimageweggelassen wird) unter Verwendung der Standard-draw_image-Schlüsselwortargumente. Dastransform-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.
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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
imagepixelweise von diesem Bild (self - image).imagekann entweder ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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 mitImage.sub().
- min(image: Image, mask: Image | None = None) Image¶
Gibt das pixelweise Minimum-Bild zweier Bilder zurück.
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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.
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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||).
imagekann ein Bildobjekt, ein Pfad zu einer unkomprimierten Bilddatei (bmp/pgm/ppm) oder ein skalarer Wert (RGB888-Tupel oder zugrunde liegender Pixelwert) sein.maskist 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(). Blendetimageper Alpha-Blending in dieses Bild ein.alphaist eine Ganzzahl von 0-256; Werte näher an 256 bevorzugen das Quellbild. Akzeptiert alleImage.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.
adaptiveführt bei True eine adaptive Histogrammausgleichung durch (langsamer, aber im Allgemeinen besser).clip_limitbegrenzt den Kontrast in der adaptiven Variante (ein kleiner Wert wie 10 erzeugt gute CLAHE-Ergebnisse).maskist 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 alsthresholdNachbarn gelöscht sind (verhält sich wie eine Standard-Erosion, fallsthresholdNone ist).maskist 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 alsthresholdNachbarn gesetzt sind (verhält sich wie eine Standard-Dilatation, fallsthresholdNone ist).maskist 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()undImage.dilate().maskist 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()undImage.erode().maskist 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.maskist 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.maskist 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.
sizeist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.thresholdwendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen.offsetverschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger).invertinvertiert die Binärausgabe.maskist 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).
sizeist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.percentileist das aus jedem Kernel auszuwählende Perzentil (0 = Min, 0.5 = Median, 1.0 = Max). Standardmäßig 0.5.thresholdwendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen.offsetverschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger).invertinvertiert die Binärausgabe.maskist 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.
sizeist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.thresholdwendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen.offsetverschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger).invertinvertiert die Binärausgabe.maskist 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.
sizeist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.biassteuert die Min-/Max-Mischung. 0 für reine Min-Filterung, 1.0 für reine Max-Filterung. Mitbiaskönnen Sie das Bild min/max-filtern.thresholdwendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen.offsetverschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger).invertinvertiert die Binärausgabe.maskist 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.
sizesteuert die Kernelgröße, die((size*2)+1)x((size*2)+1)Elemente betragen muss.kernelist 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.mulist ein multiplikativer Kontrast-Skalierungsfaktor (Standard 1.0).addist ein additiver Helligkeits-Offset (Standard 0.0).thresholdwendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen.offsetverschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger).invertinvertiert die Binärausgabe.maskist 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.
sizeist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.unsharpführt bei True eine Unschärfemaskierung durch (schärft Kanten) statt eines einfachen Gauß-Filters.mulist ein multiplikativer Kontrast-Skalierungsfaktor (Standard 1.0).addist ein additiver Helligkeits-Offset (Standard 0.0).thresholdwendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen.offsetverschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger).invertinvertiert die Binärausgabe.maskist 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.
sizeist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.sharpenschärft bei True das Bild, statt die rohe, nicht per Schwellenwert verarbeitete Kantenantwort auszugeben.mulist ein multiplikativer Kontrast-Skalierungsfaktor (Standard 1.0).addist ein additiver Helligkeits-Offset (Standard 0.0).thresholdwendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen.offsetverschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger).invertinvertiert die Binärausgabe.maskist 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).
sizeist die Kernelgröße. Verwenden Sie 1 (3x3-Kernel), 2 (5x5-Kernel) usw.color_sigmasteuert die Farbübereinstimmungstoleranz; größere Werte erzeugen mehr Farbverwischung.space_sigmasteuert die räumliche Weichzeichnung; größere Werte erzeugen mehr Pixelweichzeichnung.thresholdwendet bei True adaptiv einen Schwellenwert auf die Filterausgabe an, um ein Binärbild zu erzeugen.offsetverschiebt die Binarisierung (negativ macht mehr Pixel weiß, positiv weniger).invertinvertiert die Binärausgabe.maskist 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.xundygeben die Mittelpunktkoordinate der Transformation in Bildpixeln an. FallsxNoneist (der Standard), wird es auf die halbe Bildbreite gesetzt; ebenso istystandardmäß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.xundygeben die Mittelpunktkoordinate der Transformation in Bildpixeln an. FallsxNoneist (der Standard), wird es auf die halbe Bildbreite gesetzt; ebenso istystandardmäß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.
strengthist 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.zoomist der Betrag, um den in das Bild hineingezoomt werden soll. Standardmäßig 1.0.x_corrGleitkomma-Pixel-Offset vom Mittelpunkt. Kann negativ oder positiv sein.y_corrGleitkomma-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_rotationist 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_rotationist 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_rotationist 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_translationist 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_translationist 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…zoomist der Betrag, um den in das Bild hineingezoomt werden soll. Standardmäßig 1.0.fovist das Sichtfeld, das für die interne 2D->3D-Projektion verwendet wird. Wenn sichfov0 nähert, wird das Bild im Unendlichen platziert; wenn es sich 180 nähert, wird das Bild innerhalb des Viewports platziert.cornersist 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.imageist 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,hintundtransformakzeptieren dieselben Werte wieImage.draw_image().dssimgibt 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
roiund gibt einimage.histogram-Objekt zurück. Auch verfügbar alsImage.get_hist()oderImage.histogram().thresholdsist 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.invertinvertiert die Schwellenwert-Übereinstimmung.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.bins(Graustufen) oderl_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.differencekann 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
roiund gibt einimage.statistics-Objekt zurück. Auch verfügbar alsImage.get_stats()oderImage.statistics().thresholdsist 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.invertinvertiert die Schwellenwert-Übereinstimmung.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.bins(Graustufen) oderl_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.differencekann 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.thresholdsist 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.invertinvertiert die Schwellenwert-Übereinstimmung.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.x_strideundy_stridesteuern, wie viele Pixel beim Auswerten des Bildes übersprungen werden.area_thresholdminimale Begrenzungsrahmenfläche; kleinere Ergebnisse geben None zurück.pixels_thresholdminimale Anzahl per Schwellenwert erfasster Pixel; kleinere Ergebnisse geben None zurück.target_sizeist 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.thresholdsist 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.invertinvertiert die Schwellenwert-Übereinstimmung.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.x_strideundy_stridesteuern, wie viele Pixel bei der Suche nach einem Blob übersprungen werden. Erhöhen Sie sie, wenn bekannt ist, dass Blobs groß sind.area_thresholdminimale Begrenzungsrahmenfläche; kleinere Blobs werden herausgefiltert.pixels_thresholdminimale Anzahl per Schwellenwert erfasster Pixel; kleinere Blobs werden herausgefiltert.mergeführt bei True Blobs zusammen, deren Begrenzungsrechtecke sich überschneiden.marginvergrößert/verkleinert die für die Überschneidung verwendeten Begrenzungsrechtecke. Zusammengeführte Blobs verknüpfen ihrecode-Bitvektoren per OR (ein Bit pro Schwellenwert).threshold_cbwird pro Blob nach der Schwellenwertbildung aufgerufen; geben Sie True zum Behalten, False zum Herausfiltern zurück.merge_cbwird 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_maxfüllt bei einem Wert ungleich Null jeden Blob mit einer x_histogram-Projektion mit dieser Anzahl Bins.y_hist_bins_maxfü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.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.x_strideundy_stridesteuern, wie viele Pixel während der Hough-Transformation übersprungen werden.thresholdminimale Linienmagnitude (Summe der Sobel-Magnituden entlang der Linie); Linien darunter werden herausgefiltert.theta_marginundrho_marginsteuern 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.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.merge_distanceist die maximale Pixelseparation zwischen zwei Segmenten, damit sie zusammengeführt werden.max_theta_differenceist 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.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.x_strideundy_stridesteuern, wie viele Pixel während der Hough-Transformation übersprungen werden.thresholdminimale Kreismagnitude (Summe der Sobel-Magnituden entlang des Kreises); Kreise darunter werden herausgefiltert.x_margin,y_marginundr_marginsteuern das Zusammenführen: Kreise innerhalb dieser Schwellenwerte werden zusammengeführt.r_minminimaler Kreisradius. Standardmäßig 2.r_maxmaximaler Kreisradius. Standardmäßigmin(roi.w/2, roi.h/2).r_stepRadius-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.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.thresholdminimale 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
roiund gibt eine Liste vonimage.qrcode-Objekten zurück.roiist 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
roiund gibt eine Liste vonimage.apriltag-Objekten zurück.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.familiesist 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.fxundfysind die X- und Y-Brennweiten der Kamera in Pixeln.cxundcysind der Bildmittelpunkt, typischerweiseimage.width()/2undimage.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
roiund gibt eine Liste vonimage.datamatrix-Objekten zurück.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.effortsteuert, 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
roiund gibt eine Liste vonimage.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.roiist 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
templatemithilfe der Phasenkorrelation. Gibt einimage.displacement-Objekt zurück.roiist das Interessensbereich-Rechteck (x, y, w, h). Standardmäßig das Bildrechteck.template_roiist der Interessensbereich des Templates. Standardmäßig das Rechteck des Template-Bildes.roiundtemplate_roimüssen dieselbe Breite und Höhe haben.logpolargibt bei True die Rotations-/Skalenänderung statt der x/y-Translation zurück.fix_rotation_scaleberechnet bei True die Verschiebung nach Ausrichtung von Rotation und Skalierung (nur sinnvoll, wennlogpolar=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
templatemittels normalisierter Kreuzkorrelation übereinstimmt. Gibt ein Begrenzungsrahmen-Tupel (x, y, w, h) oder None zurück.templateist ein Graustufenbild, das mit diesem Bild abgeglichen werden soll.thresholdist ein Wert (0.0-1.0). Höhere Werte reduzieren Fehlerkennungen und Erkennungen; niedrigere Werte bewirken das Gegenteil.roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Standardmäßig das Bildrechteck.stepist die Anzahl der bei der Suche zu überspringenden Pixel (nur im Modusimage.SEARCH_EXverwendet).searchistimage.SEARCH_DS(schnellere Diamantensuche) oderimage.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.
cascadeist ein Haar-Cascade-Objekt (sieheimage.HaarCascade()).threshold(0.0-1.0). Niedrigere Werte erhöhen die Erkennungsrate und die Fehlerkennungsrate.scalemuss größer als 1.0 sein. Höhere Werte laufen schneller, erzeugen aber schlechtere Übereinstimmungen.roiist 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.
roiist 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.roiist 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.roiist 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.normalizeddeaktiviert bei True die Schlüsselpunkt-Extraktion in mehreren Auflösungen.scale_factormuss größer als 1.0 sein. Höhere Werte laufen schneller, erzeugen aber schlechtere Übereinstimmungen.max_keypointsist die maximale Anzahl beizubehaltender Schlüsselpunkte.corner_detectoristimage.CORNER_FASToderimage.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.
thresholdist 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).
roiist das Tupel des Interessensbereich-Rechtecks (x, y, w, h). Falls nicht angegeben, entspricht es dem Bildrechteck. Nur Pixel innerhalb derroiwerden 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.
reversedStandardmäß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_disparityist 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.thresholdfalls die Summe der absoluten Differenzen zwischen zwei Blöcken kleiner oder gleich diesem Schwellenwert ist, gelten sie als übereinstimmend.
- selective_search(threshold: int = 500, size: int = 20, a1: float = 1.0, a2: float = 1.0, a3: float = 1.0) List[Tuple[int, int, int, int]]¶
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.
thresholdist der Segmentierungs-Schwellenwert; höhere Werte erzeugen weniger/größere Regionen.sizeist die minimale Regionsgröße nach dem Zusammenführen.a1,a2,a3sind die Ähnlichkeitsgewichte für Farbe/Textur/Größe, die beim Zusammenführen von Regionen verwendet werden.