class Image – Oggetto immagine

Image è il tipo di dato centrale del modulo image – un buffer di pixel in memoria su cui operano ogni routine di disegno, ogni filtro, ogni trasformazione geometrica e ogni routine di estrazione delle caratteristiche. Ogni frame prodotto da csi.CSI.snapshot() è un Image; lo è anche ogni frame caricato da disco, decodificato da JPEG o PNG, allocato da un ndarray in stile numpy o costruito come tela di disegno vuota.

Un Image è descritto da tre numeri – width, height e pixformat – più un buffer di pixel contiguo. Il formato dei pixel determina sia la disposizione in memoria sia quali operazioni sono disponibili:

  • BINARY (1 bpp) – 1 bit per pixel; usato dalla morfologia e dal thresholding.

  • GRAYSCALE (8 bpp) – 1 byte per pixel; il formato canonico per la maggior parte della CV (AprilTag, bordi, ORB, flusso ottico).

  • RGB565 (16 bpp) – 2 byte per pixel (5R/6G/5B); il formato a colori predefinito.

  • BAYER (8 bpp) – dati grezzi a mosaico Bayer direttamente dal sensore. La maggior parte dei metodi CV non è disponibile sulle immagini Bayer; eseguire prima il debayer in GRAYSCALE / RGB565.

  • YUV422 (16 bpp) – colore con sottocampionamento della crominanza 4:2:2, due byte per pixel. Solo alcuni metodi funzionano direttamente su YUV422.

  • JPEG / PNG – buffer compressi. Le operazioni a livello di pixel richiedono prima to_grayscale() o to_rgb565().

Da dove provengono gli oggetti Image

Esistono quattro modi per ottenere un Image:

  • Dal frame buffer della cameracsi.CSI().snapshot() restituisce il frame catturato successivo. L’oggetto restituito è un sottile wrapper attorno alla memoria del frame buffer della camera, quindi qualsiasi operazione di disegno / filtro su di esso modifica ciò che viene inviato all’anteprima dell’IDE e al display.

  • Da un file – passare una stringa di percorso al costruttore Image. BMP, PGM, PPM, JPEG e PNG vengono decodificati direttamente in RAM (o nel frame buffer della camera se copy_to_fb=True).

  • Da un ndarray – passare un array float32 (h, w) o (h, w, 3). I pixel vengono scalati da 0.0 -- 255.0 rispettivamente in GRAYSCALE o RGB565.

  • Vuoto – passare (width, height, pixformat) per allocare una superficie di disegno riempita di zeri. Per i formati di pixel compressi (JPEG / PNG) è richiesto un argomento buffer= che contiene il flusso di byte compresso.

Tipico ciclo di cattura-elaborazione-visualizzazione

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.

Indicizzazione, lunghezza, iterazione e accesso bytes-like

  • Indicizzazioneimg[i] legge il pixel i (linearmente, in ordine di riga). img[i] = value lo scrive. I pixel Grayscale / Bayer sono interi a 8 bit, i pixel RGB565 / YUV422 sono interi compressi a 16 bit, i pixel binari sono 0 / 1. Per le immagini JPEG / PNG lo spazio degli indici è il flusso di byte compresso, non i pixel.

  • Lunghezzalen(img) restituisce il numero di pixel per i formati non compressi o il conteggio dei byte per i formati compressi.

  • Iterazionefor px in img: ... percorre l’array di pixel nello stesso ordine dell’indicizzazione [].

  • Bytes-likeImage espone il protocollo di buffer in lettura, quindi è possibile passarlo direttamente a qualsiasi cosa accetti un oggetto bytes / bytearray (ad es. uart.write(img), socket.send(img), hashlib.sha256(img)). Usare invece bytearray() per ottenere una vista in lettura/scrittura.

Flag di suggerimento

Molti metodi di Image accettano un argomento hint che è un OR logico dei seguenti flag:

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

Se arg è una stringa, crea un nuovo oggetto immagine da un file al percorso arg. Supporta il caricamento da disco di file immagine bmp/pgm/ppm/jpg/jpeg/png. Se copy_to_fb è true l’immagine viene copiata nel frame buffer invece di essere allocata sull’heap.

Se arg è un ndarray, crea un nuovo oggetto immagine dall”ndarray. Gli oggetti ndarray con forma (w, h) sono trattati come immagini in scala di grigi, (w, h, 3) sono trattati come immagini RGB565. Al momento sono supportati solo gli ndarrays a virgola mobile float32. Quando si crea un’immagine in questo modo, se si passa un argomento buffer esso verrà usato per memorizzare i dati dell’immagine invece di allocare spazio sull’heap. Se copy_to_fb è true l’immagine viene copiata nel frame buffer invece di essere allocata sull’heap o di usare il buffer.

Se arg è un int viene considerato come la larghezza di una nuova immagine e devono seguire un valore height e un valore format per creare un nuovo oggetto immagine vuoto. format può essere qualsiasi valore di pixformat dell’immagine come image.GRAYSCALE. L’immagine verrà inizializzata a tutti zeri. Si noti che per i formati di immagine compressi è atteso un valore buffer. buffer è considerato come la sorgente dei dati dell’immagine quando si creano immagini in questo modo. Se usato con copy_to_fb i dati di buffer vengono copiati nel frame buffer. Se si desidera creare un’immagine JPEG da un oggetto bytes() o bytearray() JPEG, si può passare width, height, image.JPEG per il JPEG insieme all’impostazione di buffer sul flusso di byte JPEG per creare un’immagine JPEG.

Le immagini supportano la notazione «[]». Eseguire image[index] = 8/16-bit value per assegnare un pixel dell’immagine o image[index] per ottenere un pixel dell’immagine, che sarà un valore a 8 bit per le immagini grayscale/bayer o un valore a 16 bit per le immagini RGB565/YUV. Le immagini binarie restituiscono un valore a 1 bit.

Per le immagini JPEG la notazione «[]» consente di accedere al blob dell’immagine JPEG compressa come array di byte. La lettura e la scrittura sull’array di dati sono tuttavia opache poiché le immagini JPEG sono flussi di byte compressi.

Le immagini supportano anche le operazioni di buffer in lettura. È possibile passare le immagini a ogni sorta di funzione MicroPython come se l’immagine fosse un oggetto array di byte. In particolare, se si desidera trasmettere un’immagine la si può semplicemente passare alle funzioni di scrittura UART/SPI/I2C per essere trasmessa automaticamente.

Metodi di base

width() int

Restituisce la larghezza dell’immagine in pixel.

height() int

Restituisce l’altezza dell’immagine in pixel.

format() int

Restituisce image.GRAYSCALE per le immagini in scala di grigi, image.RGB565 per le immagini RGB565, image.BAYER per le immagini con pattern bayer e image.JPEG per le immagini JPEG.

size() int

Restituisce la dimensione dell’immagine in byte.

bytearray() bytearray

Restituisce un oggetto bytearray che punta ai dati dell’immagine per l’accesso in lettura/scrittura a livello di byte.

Nota

Gli oggetti immagine vengono automaticamente convertiti in oggetti bytes quando passati a un driver MicroPython che richiede un oggetto di tipo bytes. Questo è un accesso in sola lettura. Chiamare bytearray() per ottenere l’accesso in lettura/scrittura.

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

Per le immagini in scala di grigi: Restituisce il valore del pixel in scala di grigi alla posizione (x, y). Per le immagini RGB565: Restituisce la tupla del pixel RGB888 (r, g, b) alla posizione (x, y). Per le immagini con pattern bayer: Restituisce il valore del pixel alla posizione (x, y).

Restituisce None se x o y è fuori dall’immagine.

x e y possono essere passati indipendentemente o come una tupla.

rgbtuple se True fa sì che questo metodo restituisca una tupla RGB888. Altrimenti, questo metodo restituisce il valore intero del pixel sottostante. Cioè per le immagini RGB565 questo metodo restituisce un valore RGB565. Il valore predefinito è True per le immagini RGB565 e False altrimenti.

Non supportato sulle immagini compresse.

Nota

Image.get_pixel() e Image.set_pixel() sono gli unici metodi che consentono di manipolare le immagini con pattern bayer. Le immagini con pattern bayer sono immagini letterali in cui i pixel sono R/G/R/G/ecc. per le righe pari e G/B/G/B/ecc. per le righe dispari. Ogni pixel è a 8 bit. Se si chiama questo metodo con rgbtuple impostato, allora Image.get_pixel() eseguirà il debayer dell’immagine sorgente in quella posizione di pixel e restituirà una tupla RGB888 valida per quella posizione di pixel.

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

Per le immagini in scala di grigi: Imposta il pixel alla posizione (x, y) al valore in scala di grigi pixel. Per le immagini RGB565: Imposta il pixel alla posizione (x, y) alla tupla RGB888 (r, g, b) pixel. Per le immagini con pattern bayer: Imposta il valore del pixel alla posizione (x, y) al valore pixel.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

x e y possono essere passati indipendentemente o come una tupla.

pixel può essere una tupla RGB888 (r, g, b) o il valore del pixel sottostante (cioè un valore RGB565 per le immagini RGB565 o un valore a 8 bit per le immagini in scala di grigi).

Non supportato sulle immagini compresse.

Nota

Image.get_pixel() e Image.set_pixel() sono gli unici metodi che consentono di manipolare le immagini con pattern bayer. Le immagini con pattern bayer sono immagini letterali in cui i pixel sono R/G/R/G/ecc. per le righe pari e G/B/G/B/ecc. per le righe dispari. Ogni pixel è a 8 bit. Se si chiama questo metodo con una tupla RGB888, il valore in scala di grigi di quella tupla RGB888 viene estratto e impostato alla posizione del pixel.

Metodi di conversione

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

Restituisce un oggetto ndarray creato dall’immagine. Attualmente funziona solo per le immagini GRAYSCALE o RGB565.

dtype può essere b, B o f per creare un ndarray a 8 bit con segno, a 8 bit senza segno o a virgola mobile a 32 bit. Le immagini GRAYSCALE vengono convertite direttamente in oggetti ndarray a 8 bit senza segno. Per gli oggetti ndarray a 8 bit con segno i valori (0:255) vengono mappati a (-127:128). Per gli oggetti ndarray a virgola mobile a 32 bit i valori vengono mappati a (0.0:255.0). Le immagini RGB565 vengono convertite in oggetti ndarray a 3 canali e lo stesso processo descritto sopra per le immagini GRAYSCALE viene applicato a ciascun canale a seconda di dtype. Si noti che dtype accetta anche i valori interi (ad es. ord()) di b, B e f rispettivamente.

buffer se non None è un oggetto bytearray da usare come buffer per l”ndarray. Se None viene allocato un nuovo buffer sull’heap per memorizzare i dati dell’immagine ndarray. È possibile usare l’argomento buffer per allocare direttamente l”ndarray in un buffer pre-allocato risparmiando un’allocazione sull’heap e un’operazione di copia.

L”ndarray restituito ha la forma (height, width) per le immagini GRAYSCALE e (height, width, 3) per le immagini RGB565.

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

Converte un’immagine in un’immagine bitmap (1 bit per pixel).

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Nota

Le immagini bitmap sono come le immagini in scala di grigi con solo due valori di pixel - 0 e 1. Inoltre, le immagini bitmap sono compresse in modo da memorizzare solo 1 bit per pixel, rendendole molto piccole. La libreria di immagini OpenMV consente di usare le immagini bitmap in tutti i posti in cui possono essere usate le immagini sensor.GRAYSCALE e sensor.RGB565. Tuttavia, molte operazioni applicate alle immagini bitmap non hanno senso perché le immagini bitmap hanno solo 2 valori. OpenMV consiglia di usare le immagini bitmap per i valori mask nelle operazioni e simili poiché si adattano abbastanza facilmente all’heap di MicroPython. Infine, i valori dei pixel 0 e 1 delle immagini bitmap vengono interpretati come nero e bianco quando applicati alle immagini sensor.GRAYSCALE o sensor.RGB565. La libreria gestisce automaticamente la conversione.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine in scala di grigi (8 bit per pixel).

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine RGB565 (16 bit per pixel).

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine RGB565 rainbow (16 bit per pixel).

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine RGB565 ironbow (16 bit per pixel).

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine RGB565 Depth (16 bit per pixel).

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere image.PALETTE_DEPTH o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine RGB565 Dark Event (16 bit per pixel).

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine RGB565 Light Event (16 bit per pixel).

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine JPEG.

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

quality controlla la qualità di compressione dell’immagine jpeg. Il valore può essere compreso tra 0 e 100.

subsampling può essere:

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine PNG.

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Converte un’immagine in un’immagine JPEG.

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

quality controlla la qualità di compressione dell’immagine jpeg. Il valore può essere compreso tra 0 e 100.

subsampling può essere:

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Nota

Image.compress è un alias per Image.to_jpeg.

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

Crea una copia profonda dell’oggetto immagine.

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Modifica un’immagine in-place senza cambiare il tipo dell’immagine sottostante.

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Modifica un’immagine in-place senza cambiare il tipo dell’immagine sottostante.

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (escluso image.BLACK_BACKGROUND che qui non è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

copy se True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.

copy_to_fb se True l’immagine viene caricata direttamente nel frame buffer. copy_to_fb ha priorità su copy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Nota

Image.scale è un alias per Image.crop.

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

Salva una copia dell’immagine nel filesystem al percorso path.

Supporta i file immagine bmp/pgm/ppm/jpg/jpeg. Si noti che non è possibile salvare immagini compresse in jpeg in un formato non compresso.

roi è il rettangolo della regione di interesse (x, y, w, h) da cui salvare. Se non specificato, è uguale al rettangolo dell’immagine che copia l’intera immagine. Questo argomento non è applicabile alle immagini JPEG.

quality è la qualità di compressione jpeg da usare per salvare l’immagine in formato jpeg se l’immagine non è già compressa (0-100) (int).

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

flush() None

Aggiorna il frame buffer nell’IDE con l’immagine nel frame buffer sulla camera.

Metodi di disegno

clear(mask: Image | None = None) Image

Imposta tutti i pixel dell’immagine a zero (molto veloce).

mask è un’altra immagine da usare come maschera a livello di pixel per l’operazione. La maschera dovrebbe essere un’immagine con solo pixel bianchi o neri e dovrebbe avere la stessa dimensione dell’immagine su cui si opera. Vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse.

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

Disegna una linea da (x0, y0) a (x1, y1) sull’immagine. È possibile passare x0, y0, x1, y1 separatamente o come una tupla (x0, y0, x1, y1).

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

thickness controlla lo spessore della linea in pixel.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Disegna un rettangolo sull’immagine. È possibile passare x, y, w, h separatamente o come una tupla (x, y, w, h).

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

thickness controlla lo spessore delle linee in pixel.

Passare fill impostato a True per riempire il rettangolo.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Disegna un cerchio sull’immagine. È possibile passare x, y, radius separatamente o come una tupla (x, y, radius).

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

thickness controlla lo spessore dei bordi in pixel.

Passare fill impostato a True per riempire il cerchio.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Disegna un’ellisse sull’immagine. È possibile passare cx, cy, rx, ry e la rotazione (in gradi) separatamente o come una tupla (cx, yc, rx, ry, rotation).

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

thickness controlla lo spessore dei bordi in pixel.

Passare fill impostato a True per riempire l’ellisse.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Disegna testo 8x10 a partire dalla posizione (x, y) nell’immagine. È possibile passare x, y separatamente o come una tupla (x, y).

text è una stringa da scrivere sull’immagine. I terminatori di riga \n, \r e \r\n spostano il cursore alla riga successiva.

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

scale può essere aumentato per aumentare/diminuire la dimensione del testo sull’immagine. È possibile passare valori interi o a virgola mobile maggiori di 0.

x_spacing consente di aggiungere (se positivo) o sottrarre (se negativo) pixel x tra i caratteri.

y_spacing consente di aggiungere (se positivo) o sottrarre (se negativo) pixel y tra i caratteri (per testo su più righe).

mono_space ha valore predefinito True che forza il testo a essere a spaziatura fissa. Per scale di testo grandi questo appare terribile. Impostare a False per ottenere una spaziatura dei caratteri non a larghezza fissa che appare MOLTO meglio.

char_rotation può essere 0, 90, 180, 270 per ruotare ogni carattere nella stringa di questa quantità.

char_hmirror se True specchia orizzontalmente tutti i caratteri nella stringa.

char_vflip se True ribalta verticalmente tutti i caratteri nella stringa.

string_rotation può essere 0, 90, 180, 270 per ruotare la stringa di questa quantità.

string_hmirror se True specchia orizzontalmente la stringa.

string_vflip se True ribalta verticalmente la stringa.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Disegna una croce alla posizione x, y. È possibile passare x, y separatamente o come una tupla (x, y).

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

size controlla la lunghezza delle linee della croce.

thickness controlla lo spessore dei bordi in pixel.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Disegna una freccia da (x0, y0) a (x1, y1) sull’immagine. È possibile passare x0, y0, x1, y1 separatamente o come una tupla (x0, y0, x1, y1).

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

thickness controlla lo spessore della linea in pixel.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Disegna un risultato di rilevamento sull’immagine. detection è una tupla a 6 valori (rx, ry, rw, rh, cx, cy) che descrive un rettangolo delimitante e un centroide (tipicamente restituiti da codice NN o di tracciamento del colore).

color1 è il colore del rettangolo e color2 è il colore della croce del centroide. size è la dimensione della croce del centroide, thickness controlla la larghezza del contorno e fill riempie il rettangolo.

label se fornita viene disegnata vicino al rettangolo, spostata di label_offset (x, y).

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Disegna i bordi delle linee tra una lista di angoli restituita da metodi come blob.corners. Corners è una tupla a quattro valori di tuple x/y a due valori. Ad es. [(x1,y1),(x2,y2),(x3,y3),(x4,y4)].

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

size se maggiore di 0 fa sì che gli angoli vengano disegnati come cerchi di raggio size.

thickness controlla lo spessore della linea in pixel.

Passare fill impostato a True per riempire i cerchi degli angoli se disegnati.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Disegna un”image il cui angolo in alto a sinistra parte dalla posizione x, y. È possibile passare x, y separatamente o come una tupla (x, y). Questo metodo gestisce automaticamente il rendering dell’immagine passata nel formato di pixel corretto per l’immagine di destinazione gestendo anche il clipping in modo trasparente.

È anche possibile passare un percorso invece di un oggetto immagine per far sì che questo metodo carichi automaticamente l’immagine da disco e la usi in un unico passaggio. Ad es. draw_image("test.jpg").

x_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che se y_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

y_scale controlla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che se x_scale non è specificato, esso corrisponderà a x_scale per mantenere il rapporto d’aspetto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine sorgente da disegnare. Questo consente di estrarre solo i pixel nella ROI per scalarli e disegnarli sull’immagine di destinazione.

rgb_channel è il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 (se passata) e da rendere sull’immagine di destinazione. Ad esempio, se si passa rgb_channel=1 questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.

alpha controlla quanto dell’immagine sorgente fondere nell’immagine di destinazione. Un valore di 255 disegna un’immagine sorgente opaca mentre un valore inferiore a 255 produce una fusione tra l’immagine sorgente e quella di destinazione. 0 non comporta alcuna modifica all’immagine di destinazione.

color_palette se non None può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da usare come tabella di lookup dei colori sul valore in scala di grigi di qualunque sia l’immagine sorgente. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

alpha_palette se non None può essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valore alpha dell’immagine sorgente disegnata a livello di singolo pixel, consentendo di controllare con precisione il valore alpha dei pixel in base al loro valore in scala di grigi. Un valore di pixel di 255 nella tabella di lookup alpha è opaco, mentre qualsiasi valore inferiore a 255 diventa più trasparente fino a 0. Questo viene applicato dopo l’estrazione di rgb_channel se usata.

hint è un OR logico dei flag elencati in Flag di suggerimento (incluso image.BLACK_BACKGROUND che qui è supportato).

transform è un ndarray 3x3 usato per eseguire una trasformazione prospettica sull’immagine. Attualmente supportato solo sull’OpenMV Cam N6 poiché dispone di una GPU che può farlo in hardware.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

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

Disegna i keypoint di un oggetto keypoints sull’immagine. È anche possibile passare una lista di tuple a tre valori contenenti (x, y, rotation_angle_in_degrees) per riutilizzare questo metodo per disegnare glifi di keypoint che sono un cerchio con una linea che punta in una particolare direzione.

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

size controlla quanto sono grandi i keypoint.

thickness controlla lo spessore della linea in pixel.

Passare fill impostato a True per riempire i keypoint.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Esegue il flood fill di una regione dell’immagine a partire dalla posizione x, y. È possibile passare x, y separatamente o come una tupla (x, y).

seed_threshold controlla quanto qualsiasi pixel nell’area di riempimento può differire dal pixel di partenza originale.

floating_threshold controlla quanto qualsiasi pixel nell’area di riempimento può differire da qualsiasi pixel vicino.

color è una tupla RGB888 per le immagini Grayscale o RGB565. Il valore predefinito è bianco. Tuttavia, è anche possibile passare il valore del pixel sottostante (0-255) per le immagini in scala di grigi o un valore RGB565 per le immagini RGB565.

Passare invert come True per ricolorare tutto ciò che è al di fuori dell’area connessa dal flood-fill.

Passare clear_background come True per azzerare il resto dei pixel che il flood-fill non ha ricolorato.

mask è un’altra immagine da usare come maschera a livello di pixel per l’operazione. La maschera dovrebbe essere un’immagine con solo pixel bianchi o neri e dovrebbe avere la stessa dimensione dell’immagine su cui si opera. Vengono valutati solo i pixel impostati nella maschera durante il flood filling.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Rasterizza un ndarray di eventi (come riempito da csi.IOCTL_GENX320_READ_EVENTS) su un Image per la visualizzazione. Il buffer dell’immagine deve essere un’immagine GRAYSCALE 320x320.

Per ogni riga csi.PIX_ON_EVENT al pixel dell’evento viene aggiunto +contrast; per ogni riga csi.PIX_OFF_EVENT al pixel viene aggiunto -contrast. Gli eventi di trigger vengono ignorati. I valori dei pixel sono limitati a 0-255.

clear se True ripristina il buffer dell’immagine a brightness prima del disegno — ogni frame diventa un nuovo rendering basato solo sugli eventi. Impostare a False per accumulare eventi su più chiamate (utile per scie di movimento a lunga esposizione).

brightness controlla la linea di base grigio-medio a cui il buffer viene ripristinato quando clear è True. Il valore predefinito 128 colloca gli eventi ON all’estremità chiara e gli eventi OFF all’estremità scura con uguale margine.

contrast controlla di quanto ogni evento sposta il proprio pixel — valori più alti fanno risaltare gli eventi, al costo di saturare rapidamente quando molti eventi cadono sullo stesso pixel.

Metodi di mascheramento

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

Azzera una parte rettangolare dell’immagine. Se non vengono forniti argomenti questo metodo azzera il centro dell’immagine.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Azzera una parte circolare dell’immagine. Se non vengono forniti argomenti questo metodo azzera il centro dell’immagine.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Azzera una parte a forma di ellisse dell’immagine. Se non vengono forniti argomenti questo metodo azzera il centro dell’immagine.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

Metodi binari

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

Imposta tutti i pixel dell’immagine a nero o bianco a seconda che ogni pixel sia all’interno di una delle tuple di soglia in thresholds.

thresholds è una lista di tuple (lo, hi) per le immagini in scala di grigi, o tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) per le immagini RGB565. I valori min/max scambiati vengono corretti automaticamente; i componenti mancanti assumono per impostazione predefinita l’intervallo massimo.

invert inverte la corrispondenza della soglia.

zero se True, azzera i pixel sottoposti a soglia e lascia gli altri intatti.

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

to_bitmap se True, converte i dati dell’immagine in una bitmap a 1 bit per pixel. Per immagini molto piccole questo può richiedere copy=True.

copy se True, restituisce una nuova immagine sull’heap invece di modificare l’immagine sorgente.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

invert() Image

Inverte tutti i valori dei pixel nell’immagine (ogni pixel diventa 255 - pixel per i canali a 8 bit).

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Esegue l’AND logico di questa immagine con un’altra immagine.

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Esegue il NAND logico di questa immagine con un’altra immagine.

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Esegue l’OR logico di questa immagine con un’altra immagine.

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Esegue il NOR logico di questa immagine con un’altra immagine.

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Esegue lo XOR logico di questa immagine con un’altra immagine.

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Esegue lo XNOR logico di questa immagine con un’altra immagine.

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

Metodi ISP

awb(max: bool = False) Image

Esegue il bilanciamento automatico del bianco sull’immagine usando l’algoritmo gray-world. Opera su immagini RAW Bayer o RGB565. Non ha effetto sulle immagini binary/grayscale.

max se True, usa invece l’algoritmo white-patch.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o yuv.

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

Moltiplica la matrice di correzione del colore a virgola mobile passata con l’immagine. Le matrici possono essere 3x3 o 3x4 (con colonna di offset), in forma di lista annidata o lista piatta:

[[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]

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Regola la gamma, il contrasto e la luminosità dell’immagine.

gamma applica pow(pixel, 1/gamma) dopo la normalizzazione. Valori maggiori di 1.0 schiariscono; minori di 1.0 scuriscono.

contrast applica pixel * contrast dopo la normalizzazione.

brightness applica pixel + brightness dopo la normalizzazione.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Alias per Image.gamma.

Metodi matematici

negate() Image

Alias per Image.invert.

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

Alias per Image.draw_image(). Sostituisce questa immagine con image (o trasforma questa immagine in-place se image è omesso) usando i normali argomenti keyword di draw_image. L’argomento transform è un ndarray 3x3 che descrive una trasformazione prospettica (supportato solo sulle camere OpenMV con ULAB abilitato).

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

Alias per Image.replace().

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

Alias per Image.replace().

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

Aggiunge un’immagine pixel per pixel a questa.

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Sottrae image pixel per pixel da questa immagine (self - image).

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Questo metodo accetta anche l’intero insieme di argomenti keyword di Image.draw_image() (x, y, x_scale, y_scale, roi, rgb_channel, alpha, color_palette, alpha_palette, hint, transform).

Non supportato sulle immagini compresse o bayer.

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

Sottrazione inversa: sostituisce questa immagine con image - self pixel per pixel. Altrimenti identico a Image.sub().

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

Restituisce l’immagine minima di due immagini pixel per pixel.

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Restituisce l’immagine massima di due immagini pixel per pixel.

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Restituisce l’immagine della differenza assoluta tra due immagini (ad es. ||a-b||).

image può essere un oggetto immagine, un percorso a un file immagine non compresso (bmp/pgm/ppm) o un valore scalare (tupla RGB888 o valore del pixel sottostante).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Alias per Image.draw_image(). Esegue l’alpha-blending di image in questa immagine. alpha è un intero 0-256; valori più vicini a 256 favoriscono l’immagine sorgente. Accetta tutti gli argomenti keyword di Image.draw_image().

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

Esegue l’equalizzazione dell’istogramma sull’immagine per normalizzare contrasto e luminosità.

adaptive se True, esegue l’equalizzazione adattiva dell’istogramma (più lenta ma generalmente migliore).

clip_limit limita il contrasto nella variante adattiva (un valore piccolo come 10 produce buoni risultati CLAHE).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

Metodi di filtraggio

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

Rimuove i pixel dai bordi delle aree segmentate. Convolge un kernel ((size*2)+1)x((size*2)+1) sull’immagine, cancellando il pixel centrale se più di threshold vicini sono cancellati (agisce come un’erosione standard se threshold è None).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Aggiunge pixel ai bordi delle aree segmentate. Convolge un kernel ((size*2)+1)x((size*2)+1) sull’immagine, impostando il pixel centrale se più di threshold vicini sono impostati (agisce come una dilatazione standard se threshold è None).

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Esegue l’erosione seguita dalla dilatazione. Vedi Image.erode() e Image.dilate().

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Non supportato sulle immagini compresse o bayer/yuv.

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

Esegue la dilatazione seguita dall’erosione. Vedi Image.dilate() e Image.erode().

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Non supportato sulle immagini compresse o bayer/yuv.

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

Restituisce la differenza dell’immagine tra l’immagine e l’immagine sottoposta a Image.open().

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Non supportato sulle immagini compresse o bayer/yuv.

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

Restituisce la differenza dell’immagine tra l’immagine e l’immagine sottoposta a Image.close().

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Non supportato sulle immagini compresse o bayer/yuv.

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

Filtro standard di sfocatura della media usando un box filter.

size è la dimensione del kernel. Usare 1 (kernel 3x3), 2 (kernel 5x5), ecc.

threshold se True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria. offset sposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno). invert inverte l’output binario.

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Esegue un filtro percentile sull’immagine (mediana per impostazione predefinita).

size è la dimensione del kernel. Usare 1 (kernel 3x3), 2 (kernel 5x5), ecc.

percentile è il percentile da selezionare da ogni kernel (0 = min, 0.5 = mediana, 1.0 = max). Il valore predefinito è 0.5.

threshold se True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria. offset sposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno). invert inverte l’output binario.

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Sostituisce ogni pixel con la moda dei suoi vicini. Può produrre artefatti sui bordi delle immagini RGB a causa dell’operazione non lineare.

size è la dimensione del kernel. Usare 1 (kernel 3x3), 2 (kernel 5x5), ecc.

threshold se True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria. offset sposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno). invert inverte l’output binario.

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Esegue il filtro midpoint sull’immagine. Questo filtro trova il punto medio ((max-min)/2) del vicinato di ogni pixel nell’immagine.

size è la dimensione del kernel. Usare 1 (kernel 3x3), 2 (kernel 5x5), ecc.

bias controlla la miscelazione min/max. 0 per il solo filtraggio min, 1.0 per il solo filtraggio max. Usando bias è possibile filtrare l’immagine in min/max.

threshold se True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria. offset sposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno). invert inverte l’output binario.

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Convolge l’immagine con un kernel di filtro arbitrario.

size controlla la dimensione del kernel, che deve essere di ((size*2)+1)x((size*2)+1) elementi.

kernel è il kernel con cui convolvere, come lista/tupla 1D piatta di ((size*2)+1)*((size*2)+1) elementi, o come lista/tupla 2D con ((size*2)+1) righe di ((size*2)+1) elementi.

mul è una scala moltiplicativa del contrasto (predefinito 1.0).

add è un offset additivo della luminosità (predefinito 0.0).

threshold se True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria. offset sposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno). invert inverte l’output binario.

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Convolge l’immagine con un kernel gaussiano di smoothing.

size è la dimensione del kernel. Usare 1 (kernel 3x3), 2 (kernel 5x5), ecc.

unsharp se True, esegue un’operazione di unsharp mask (affina i bordi) invece di una semplice gaussiana.

mul è una scala moltiplicativa del contrasto (predefinito 1.0).

add è un offset additivo della luminosità (predefinito 0.0).

threshold se True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria. offset sposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno). invert inverte l’output binario.

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Convolge l’immagine con un kernel laplaciano di rilevamento dei bordi.

size è la dimensione del kernel. Usare 1 (kernel 3x3), 2 (kernel 5x5), ecc.

sharpen se True, affina l’immagine invece di restituire la risposta dei bordi grezza non sottoposta a soglia.

mul è una scala moltiplicativa del contrasto (predefinito 1.0).

add è un offset additivo della luminosità (predefinito 0.0).

threshold se True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria. offset sposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno). invert inverte l’output binario.

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

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

Convolge l’immagine con un filtro bilaterale (smoothing che preserva i bordi).

size è la dimensione del kernel. Usare 1 (kernel 3x3), 2 (kernel 5x5), ecc.

color_sigma controlla la tolleranza di corrispondenza del colore; valori più grandi producono più sfocatura del colore.

space_sigma controlla la sfocatura spaziale; valori più grandi producono più sfocatura dei pixel.

threshold se True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria. offset sposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno). invert inverte l’output binario.

mask è un’immagine binaria usata come maschera a livello di pixel; vengono modificati solo i pixel impostati nella maschera.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer/yuv.

Metodi geometrici

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

Ri-proietta un’immagine dalle coordinate cartesiane alle coordinate polari lineari.

Impostare reverse=True per ri-proiettare nella direzione opposta.

x e y specificano la coordinata del centro della trasformazione in pixel dell’immagine. Se x è None (il valore predefinito) viene impostato a metà della larghezza dell’immagine; allo stesso modo y per impostazione predefinita è metà dell’altezza dell’immagine.

La ri-proiezione polare lineare trasforma la rotazione di un’immagine in traslazione x.

Non supportato sulle immagini compresse o bayer.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Ri-proietta un’immagine dalle coordinate cartesiane alle coordinate polari logaritmiche.

Impostare reverse=True per ri-proiettare nella direzione opposta.

x e y specificano la coordinata del centro della trasformazione in pixel dell’immagine. Se x è None (il valore predefinito) viene impostato a metà della larghezza dell’immagine; allo stesso modo y per impostazione predefinita è metà dell’altezza dell’immagine.

La ri-proiezione polare logaritmica trasforma la rotazione di un’immagine in traslazione x e lo scaling/zoom in traslazione y.

Non supportato sulle immagini compresse o bayer.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Esegue la correzione dell’obiettivo per rimuovere l’effetto fisheye dell’immagine dovuto alla distorsione dell’obiettivo.

strength è un float che definisce quanto rimuovere l’effetto fisheye dell’immagine. Provare 1.8 per impostazione predefinita e poi aumentare o diminuire da lì finché l’immagine non appare buona.

zoom è la quantità di zoom da applicare sull’immagine. 1.0 per impostazione predefinita.

x_corr offset di pixel a virgola mobile dal centro. Può essere negativo o positivo.

y_corr offset di pixel a virgola mobile dal centro. Può essere negativo o positivo.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

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

Corregge i problemi di prospettiva nell’immagine eseguendo una rotazione 3D del frame buffer.

x_rotation è il numero di gradi di cui ruotare l’immagine nel frame buffer attorno all’asse x (cioè questo fa ruotare l’immagine in su e in giù).

y_rotation è il numero di gradi di cui ruotare l’immagine nel frame buffer attorno all’asse y (cioè questo fa ruotare l’immagine a sinistra e a destra).

z_rotation è il numero di gradi di cui ruotare l’immagine nel frame buffer attorno all’asse z (cioè questo fa ruotare l’immagine sul posto).

x_translation è il numero di unità di cui spostare l’immagine a sinistra o a destra dopo la rotazione. Poiché questa traslazione viene applicata nello spazio 3D le unità non sono pixel…

y_translation è il numero di unità di cui spostare l’immagine in alto o in basso dopo la rotazione. Poiché questa traslazione viene applicata nello spazio 3D le unità non sono pixel…

zoom è la quantità di zoom da applicare sull’immagine. 1.0 per impostazione predefinita.

fov è il campo visivo usato per la proiezione interna 2D->3D. Man mano che fov si avvicina a 0 l’immagine viene posizionata all’infinito; man mano che si avvicina a 180 l’immagine viene posizionata all’interno del viewport.

corners è una lista di quattro tuple (x, y) usate per costruire un’omografia a 4 punti che mappa gli angoli a (0, 0), (image_width-1, 0), (image_width-1, image_height-1) e (0, image_height-1) prima di applicare la rotazione 3D. Utile per le trasformazioni con vista a volo d’uccello.

Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione ..

Non supportato sulle immagini compresse o bayer.

Questo metodo non è disponibile sull’OpenMV Cam M4.

Metodi Get

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

Calcola la similarità tra due immagini usando lo Structural Similarity Index (SSIM). SSIM varia da -1 (opposto) a 1 (identico). Restituisce un oggetto image.similarity.

image è l’immagine con cui confrontare (un oggetto immagine o una stringa di percorso, ad es. "test.jpg").

x, y, x_scale, y_scale, roi, rgb_channel, alpha, color_palette, alpha_palette, hint e transform accettano gli stessi valori di Image.draw_image().

dssim se True, restituisce invece lo Structural Dissimilarity Index (DSSIM), dove 0 significa identico e 1 significa completamente diverso.

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

Calcola l’istogramma normalizzato su tutti i canali di colore per una roi e restituisce un oggetto image.histogram. Disponibile anche come Image.get_hist() o Image.histogram().

thresholds è una lista di tuple (lo, hi) per le immagini in scala di grigi, o tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) per le immagini RGB565. Se passato, l’istogramma viene calcolato solo sui pixel all’interno delle soglie.

invert inverte la corrispondenza della soglia.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

bins (scala di grigi) o l_bins/a_bins/b_bins (RGB565) impostano il numero di bin dell’istogramma per canale. Deve essere maggiore di 2. Il valore predefinito è il numero massimo di bin per canale.

difference può essere impostato su un oggetto immagine per operare sulla differenza tra l’immagine corrente e quell’immagine senza un buffer aggiuntivo.

Non supportato sulle immagini compresse o bayer.

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

Calcola la media, la mediana, la moda, la deviazione standard, il min, il max, il quartile inferiore e il quartile superiore per tutti i canali di colore per una roi e restituisce un oggetto image.statistics. Disponibile anche come Image.get_stats() o Image.statistics().

thresholds è una lista di tuple (lo, hi) per le immagini in scala di grigi, o tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) per le immagini RGB565. Se passato, le statistiche vengono calcolate solo sui pixel all’interno delle soglie.

invert inverte la corrispondenza della soglia.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

bins (scala di grigi) o l_bins/a_bins/b_bins (RGB565) impostano il numero di bin dell’istogramma per canale. Deve essere maggiore di 2. Il valore predefinito è il numero massimo di bin per canale.

difference può essere impostato su un oggetto immagine per operare sulla differenza tra l’immagine corrente e quell’immagine senza un buffer aggiuntivo.

Non supportato sulle immagini compresse o bayer.

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

Calcola una regressione lineare (Theil-Sen) su tutti i pixel sottoposti a soglia nell’immagine. Restituisce un oggetto image.line, o None se non è stata trovata alcuna linea.

thresholds è una lista di tuple (lo, hi) per le immagini in scala di grigi, o tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) per le immagini RGB565.

invert inverte la corrispondenza della soglia.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

x_stride e y_stride controllano quanti pixel vengono saltati durante la valutazione dell’immagine.

area_threshold area minima del bounding box; risultati più piccoli restituiscono None.

pixels_threshold conteggio minimo di pixel sottoposti a soglia; risultati più piccoli restituiscono None.

target_size è una tupla (w, h). La ROI viene ridotta tramite scaling per area per adattarsi a questa dimensione prima di eseguire l’algoritmo O(N^2). Il valore predefinito è (80, 60).

Non supportato sulle immagini compresse o bayer.

Metodi di rilevamento

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]

Trova tutti i blob (regioni di pixel connesse che superano un test di soglia) nell’immagine e restituisce una lista di oggetti image.blob.

thresholds è una lista di tuple (lo, hi) per le immagini in scala di grigi, o tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) per le immagini RGB565 (canali LAB). Possono essere passate fino a 32 tuple. I valori min/max scambiati vengono corretti automaticamente; i componenti mancanti assumono per impostazione predefinita l’intervallo massimo.

invert inverte la corrispondenza della soglia.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

x_stride e y_stride controllano quanti pixel vengono saltati durante la ricerca di un blob. Aumentare se si sa che i blob sono grandi.

area_threshold area minima del bounding box; i blob più piccoli vengono filtrati.

pixels_threshold conteggio minimo di pixel sottoposti a soglia; i blob più piccoli vengono filtrati.

merge se True unisce i blob i cui rettangoli delimitanti si intersecano. margin ingrandisce/restringe i rettangoli delimitanti usati per l’intersezione. I blob uniti eseguono l’OR dei loro vettori di bit code (un bit per soglia).

threshold_cb viene chiamata per ogni blob dopo il thresholding; restituire True per mantenerlo, False per filtrarlo.

merge_cb viene chiamata per ogni coppia di blob che sta per essere unita; restituire True per consentire l’unione, False per impedirla.

x_hist_bins_max se diverso da zero, popola ogni blob con una proiezione x_histogram usando questo numero di bin.

y_hist_bins_max se diverso da zero, popola ogni blob con una proiezione y_histogram usando questo numero di bin.

Non supportato sulle immagini compresse o bayer.

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]

Trova tutte le linee infinite nell’immagine usando la trasformata di hough. Restituisce una lista di oggetti image.line.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

x_stride e y_stride controllano quanti pixel vengono saltati durante la trasformata di hough.

threshold magnitudine minima della linea (somma delle magnitudini sobel lungo la linea); le linee al di sotto di questo valore vengono filtrate.

theta_margin e rho_margin controllano l’unione: le linee entro queste soglie vengono unite.

Non supportato sulle immagini compresse o bayer.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Trova i segmenti di linea nell’immagine. Restituisce una lista di oggetti image.line.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

merge_distance è la massima separazione in pixel tra due segmenti per essere uniti.

max_theta_difference è la massima differenza di theta in gradi tra i segmenti per essere uniti.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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]

Trova i cerchi nell’immagine usando la trasformata di hough. Restituisce una lista di oggetti image.circle.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

x_stride e y_stride controllano quanti pixel vengono saltati durante la trasformata di hough.

threshold magnitudine minima del cerchio (somma delle magnitudini sobel lungo il cerchio); i cerchi al di sotto di questo valore vengono filtrati.

x_margin, y_margin e r_margin controllano l’unione: i cerchi entro queste soglie vengono uniti.

r_min raggio minimo del cerchio. Il valore predefinito è 2.

r_max raggio massimo del cerchio. Il valore predefinito è min(roi.w/2, roi.h/2).

r_step dimensione del passo del raggio. Il valore predefinito è 2.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Trova i rettangoli nell’immagine usando l’algoritmo di rilevamento dei quad di apriltag. Restituisce una lista di oggetti image.rect.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

threshold magnitudine minima dei bordi (somma delle magnitudini sobel lungo i bordi del rettangolo); i rettangoli al di sotto di questo valore vengono filtrati.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Trova tutti i qrcode all’interno della roi e restituisce una lista di oggetti image.qrcode.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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]

Trova tutti gli apriltag all’interno della roi e restituisce una lista di oggetti image.apriltag.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

families è una bitmask delle famiglie di tag da decodificare. È l’OR logico di:

Il valore predefinito è image.TAG36H11. Il tempo di rilevamento scala con il numero di famiglie abilitate.

fx e fy sono le lunghezze focali X e Y della camera in pixel.

cx e cy sono il centro dell’immagine, tipicamente image.width()/2 e image.height()/2.

Non supportato sulle immagini compresse.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Trova tutte le datamatrix all’interno della roi e restituisce una lista di oggetti image.datamatrix.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

effort controlla quanto tempo dedicare al tentativo di trovare corrispondenze di data matrix. Valori più alti migliorano il rilevamento al costo del frame rate. Valori al di sotto di ~160 non rilevano nulla; valori al di sopra di ~240 producono rendimenti decrescenti. Il valore predefinito è 200.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Trova tutti i codici a barre 1D all’interno della roi e restituisce una lista di oggetti image.barcode. Esegue la scansione sia orizzontalmente che verticalmente.

Tipi di codici a barre supportati: image.EAN2, image.EAN5, image.EAN8, image.UPCE, image.ISBN10, image.UPCA, image.EAN13, image.ISBN13, image.I25, image.DATABAR (RSS-14), image.DATABAR_EXP (RSS-Expanded), image.CODABAR, image.CODE39, image.PDF417, image.CODE93, image.CODE128.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Trova l’offset di traslazione di questa immagine rispetto a template usando la correlazione di fase. Restituisce un oggetto image.displacement.

roi è il rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

template_roi è la regione di interesse del template. Il valore predefinito è il rettangolo dell’immagine template. roi e template_roi devono avere la stessa larghezza e altezza.

logpolar se True restituisce il cambiamento di rotazione/scala invece della traslazione x/y.

fix_rotation_scale se True, calcola lo spostamento dopo aver allineato rotazione e scala (significativo solo quando logpolar=False).

Nota

Usare questo metodo su dimensioni di immagine potenze di 2 (ad es. sensor.B64X64).

Non supportato sulle immagini compresse o bayer. Non disponibile sull’OpenMV Cam M4.

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

Tenta di trovare la prima posizione nell’immagine in cui template corrisponde usando la Normalized Cross Correlation. Restituisce una tupla di bounding box (x, y, w, h), o None.

template è un’immagine in scala di grigi con cui confrontare questa immagine.

threshold è un valore (0.0-1.0). Valori più alti riducono i falsi positivi e i rilevamenti; valori più bassi fanno l’opposto.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

step è il numero di pixel da saltare durante la ricerca (usato solo in modalità image.SEARCH_EX).

search è image.SEARCH_DS (ricerca a diamante più veloce) o image.SEARCH_EX (ricerca esaustiva).

Funziona solo sulle immagini in scala di grigi.

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]]

Cerca nell’immagine aree corrispondenti alla cascata Haar passata e restituisce una lista di tuple di bounding box (x, y, w, h). Restituisce una lista vuota se non vengono trovate caratteristiche.

cascade è un oggetto Haar Cascade (vedi image.HaarCascade()).

threshold (0.0-1.0). Valori più bassi aumentano il tasso di rilevamento e il tasso di falsi positivi.

scale deve essere maggiore di 1.0. Valori più alti sono più veloci ma producono corrispondenze più scarse.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

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

Cerca la pupilla in una tupla di regione di interesse (x, y, w, h) attorno a un occhio. Restituisce la posizione (x, y) della pupilla, o (0, 0) se non ne viene trovata alcuna.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h).

Funziona solo sulle immagini in scala di grigi.

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

Estrae i keypoint LBP (local-binary-patterns) dalla regione di interesse. Usare image.match_descriptor() per confrontare due descrittori.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h).

Funziona solo sulle immagini in scala di grigi.

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

Estrae i keypoint ORB dalla regione di interesse. Usare image.match_descriptor() per confrontare due descrittori. Restituisce None se non sono stati trovati keypoint.

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.

threshold (0-255) controlla il numero di angoli estratti. Soglie più basse producono più angoli. Usare ~20 per AGAST, ~60-80 per FAST.

normalized se True, disabilita l’estrazione di keypoint a multi-risoluzione.

scale_factor deve essere maggiore di 1.0. Valori più alti sono più veloci ma producono corrispondenze più scarse.

max_keypoints è il numero massimo di keypoint da mantenere.

corner_detector è image.CORNER_FAST o image.CORNER_AGAST.

Funziona solo sulle immagini in scala di grigi.

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

Trasforma l’immagine in bianco e nero lasciando solo i bordi come pixel bianchi.

  • image.EDGE_SIMPLE - Semplice algoritmo di filtro passa-alto sottoposto a soglia.

  • image.EDGE_CANNY - Algoritmo di rilevamento dei bordi Canny.

threshold è una tupla a due valori contenente una soglia bassa e una soglia alta. È possibile controllare la qualità dei bordi regolando questi valori. Il valore predefinito è (100, 200).

Funziona solo sulle immagini in scala di grigi.

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

Sostituisce i pixel nella ROI con linee HOG (histogram of orientated gradients).

roi è la tupla del rettangolo della regione di interesse (x, y, w, h). Se non specificato, è uguale al rettangolo dell’immagine. Vengono elaborati solo i pixel all’interno della roi.

Funziona solo sulle immagini in scala di grigi.

Questo metodo non è disponibile sull’OpenMV Cam M4.

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

Prende un’immagine in scala di grigi a doppia larghezza contenente l’output di due sensori di camera affiancati e ne sostituisce una metà con l’immagine di disparità stereo (ogni pixel rappresenta la profondità). Ad es. per due camere 320x240 passare un’immagine 640x240.

reversed Per impostazione predefinita l’immagine sinistra viene confrontata con la destra e l’immagine destra viene sostituita. Impostare a True per confrontare destra->sinistra e sostituire l’immagine sinistra.

max_disparity è la distanza massima (1-255) entro cui cercare un blocco di pixel corrispondente usando la somma delle differenze assolute. Valori più grandi richiedono un tempo esponenzialmente più lungo ma producono un output di qualità superiore.

threshold se la somma delle differenze assolute tra due blocchi è minore o uguale a questa soglia, sono considerati corrispondenti.

Esegue la selective search sull’immagine e restituisce una lista di tuple di bounding box (x, y, w, h) di proposte di oggetti.

threshold è la soglia di segmentazione; valori più alti producono regioni meno numerose/più grandi.

size è la dimensione minima della regione dopo l’unione.

a1, a2, a3 sono i pesi di similarità colore/texture/dimensione usati durante l’unione delle regioni.