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()oto_rgb565().
Da dove provengono gli oggetti Image¶
Esistono quattro modi per ottenere un Image:
Dal frame buffer della camera –
csi.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 secopy_to_fb=True).Da un ndarray – passare un array float32
(h, w)o(h, w, 3). I pixel vengono scalati da0.0 -- 255.0rispettivamente 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 argomentobuffer=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¶
Indicizzazione –
img[i]legge il pixeli(linearmente, in ordine di riga).img[i] = valuelo 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.Lunghezza –
len(img)restituisce il numero di pixel per i formati non compressi o il conteggio dei byte per i formati compressi.Iterazione –
for px in img: ...percorre l’array di pixel nello stesso ordine dell’indicizzazione[].Bytes-like –
Imageespone il protocollo di buffer in lettura, quindi è possibile passarlo direttamente a qualsiasi cosa accetti un oggettobytes/bytearray(ad es.uart.write(img),socket.send(img),hashlib.sha256(img)). Usare invecebytearray()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:
image.AREA: Usa lo scaling per area durante la riduzione invece del valore predefinito del nearest neighbor.
image.BILINEAR: Usa lo scaling bilineare invece dello scaling predefinito nearest neighbor.
image.BICUBIC: Usa lo scaling bicubico invece dello scaling predefinito nearest neighbor.
image.CENTER: Centra l’immagine disegnata sul display. Questo viene applicato dopo lo scaling.
image.HMIRROR: Specchia orizzontalmente l’immagine.
image.VFLIP: Ribalta verticalmente l’immagine.
image.TRANSPOSE: Traspone l’immagine (scambia x/y).
image.EXTRACT_RGB_CHANNEL_FIRST: Esegue l’estrazione del rgb_channel prima dello scaling.
image.APPLY_COLOR_PALETTE_FIRST: Applica la palette di colori prima dello scaling.
image.SCALE_ASPECT_KEEP: Scala l’immagine disegnata per adattarla all’interno del display.
image.SCALE_ASPECT_EXPAND: Scala l’immagine disegnata per riempire il display (con conseguente ritaglio)
image.SCALE_ASPECT_IGNORE: Scala l’immagine disegnata per riempire il display (con conseguente stiramento).
image.ROTATE_90: Ruota l’immagine di 90 gradi (è semplicemente VFLIP | TRANSPOSE).
image.ROTATE_180: Ruota l’immagine di 180 gradi (è semplicemente HMIRROR | VFLIP).
image.ROTATE_270: Ruota l’immagine di 270 gradi (è semplicemente HMIRROR | TRANSPOSE).
image.BLACK_BACKGROUND: Assume che l’immagine di sfondo su cui si disegna sia nera, velocizzando la fusione. Supportato solo daImage.draw_image()eImage.get_similarity().
- 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 percorsoarg. Supporta il caricamento da disco di file immagine bmp/pgm/ppm/jpg/jpeg/png. Secopy_to_fbè true l’immagine viene copiata nel frame buffer invece di essere allocata sull’heap.Se
argè unndarray, crea un nuovo oggetto immagine dall”ndarray. Gli oggettindarraycon forma(w, h)sono trattati come immagini in scala di grigi,(w, h, 3)sono trattati come immagini RGB565. Al momento sono supportati solo glindarraysa virgola mobile float32. Quando si crea un’immagine in questo modo, se si passa un argomentobufferesso verrà usato per memorizzare i dati dell’immagine invece di allocare spazio sull’heap. Secopy_to_fbè true l’immagine viene copiata nel frame buffer invece di essere allocata sull’heap o di usare ilbuffer.Se
argè unintviene considerato come la larghezza di una nuova immagine e devono seguire un valoreheighte un valoreformatper creare un nuovo oggetto immagine vuoto.formatpuò essere qualsiasi valore di pixformat dell’immagine comeimage.GRAYSCALE. L’immagine verrà inizializzata a tutti zeri. Si noti che per i formati di immagine compressi è atteso un valorebuffer.bufferè considerato come la sorgente dei dati dell’immagine quando si creano immagini in questo modo. Se usato concopy_to_fbi dati dibuffervengono copiati nel frame buffer. Se si desidera creare un’immagine JPEG da un oggettobytes()obytearray()JPEG, si può passarewidth,height,image.JPEGper il JPEG insieme all’impostazione dibuffersul flusso di byte JPEG per creare un’immagine JPEG.Le immagini supportano la notazione «[]». Eseguire
image[index] = 8/16-bit valueper assegnare un pixel dell’immagine oimage[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¶
- format() int¶
Restituisce
image.GRAYSCALEper le immagini in scala di grigi,image.RGB565per le immagini RGB565,image.BAYERper le immagini con pattern bayer eimage.JPEGper le immagini JPEG.
- bytearray() bytearray¶
Restituisce un oggetto
bytearrayche punta ai dati dell’immagine per l’accesso in lettura/scrittura a livello di byte.Nota
Gli oggetti immagine vengono automaticamente convertiti in oggetti
bytesquando passati a un driver MicroPython che richiede un oggetto di tipobytes. Questo è un accesso in sola lettura. Chiamarebytearray()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
xoyè fuori dall’immagine.xeypossono essere passati indipendentemente o come una tupla.rgbtuplese 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()eImage.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 conrgbtupleimpostato, alloraImage.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 valorepixel.Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione
..xeypossono essere passati indipendentemente o come una tupla.pixelpuò 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()eImage.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
ndarraycreato dall’immagine. Attualmente funziona solo per le immagini GRAYSCALE o RGB565.dtypepuò essereb,Bofper creare unndarraya 8 bit con segno, a 8 bit senza segno o a virgola mobile a 32 bit. Le immagini GRAYSCALE vengono convertite direttamente in oggettindarraya 8 bit senza segno. Per gli oggettindarraya 8 bit con segno i valori (0:255) vengono mappati a (-127:128). Per gli oggettindarraya virgola mobile a 32 bit i valori vengono mappati a (0.0:255.0). Le immagini RGB565 vengono convertite in oggettindarraya 3 canali e lo stesso processo descritto sopra per le immagini GRAYSCALE viene applicato a ciascun canale a seconda didtype. Si noti chedtypeaccetta anche i valori interi (ad es.ord()) dib,Befrispettivamente.bufferse nonNoneè un oggettobytearrayda usare come buffer per l”ndarray. SeNoneviene allocato un nuovo buffer sull’heap per memorizzare i dati dell’immaginendarray. È possibile usare l’argomentobufferper allocare direttamente l”ndarrayin un buffer pre-allocato risparmiando un’allocazione sull’heap e un’operazione di copia.L”
ndarrayrestituito 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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.GRAYSCALEesensor.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 valorimasknelle 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 immaginisensor.GRAYSCALEosensor.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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò essereimage.PALETTE_DEPTHo 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.qualitycontrolla la qualità di compressione dell’immagine jpeg. Il valore può essere compreso tra 0 e 100.subsamplingpuò essere:image.JPEG_SUBSAMPLING_AUTO: Usa il miglior sottocampionamento per l’immagine in base alla qualità.image.JPEG_SUBSAMPLING_444: Usa il sottocampionamento 4:4:4.image.JPEG_SUBSAMPLING_422: Usa il sottocampionamento 4:2:2.image.JPEG_SUBSAMPLING_420: Usa il sottocampionamento 4:2:0.
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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. Questo non ha effetti speciali se l’immagine è già nel frame buffer.qualitycontrolla la qualità di compressione dell’immagine jpeg. Il valore può essere compreso tra 0 e 100.subsamplingpuò essere:image.JPEG_SUBSAMPLING_AUTO: Usa il miglior sottocampionamento per l’immagine in base alla qualità.image.JPEG_SUBSAMPLING_444: Usa il sottocampionamento 4:4:4.image.JPEG_SUBSAMPLING_422: Usa il sottocampionamento 4:2:2.image.JPEG_SUBSAMPLING_420: Usa il sottocampionamento 4:2:0.
Restituisce l’oggetto immagine in modo da poter chiamare un altro metodo usando la notazione
..Nota
Image.compressè un alias perImage.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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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_fbse 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (esclusoimage.BLACK_BACKGROUNDche qui non è supportato).transformè unndarray3x3 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.copyse True crea una copia profonda sull’heap dell’immagine convertita invece di convertire l’immagine originale in-place.copy_to_fbse True l’immagine viene caricata direttamente nel frame buffer.copy_to_fbha priorità sucopy. 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 perImage.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
..
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.thicknesscontrolla 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.thicknesscontrolla lo spessore delle linee in pixel.Passare
fillimpostato 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.thicknesscontrolla lo spessore dei bordi in pixel.Passare
fillimpostato 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.thicknesscontrolla lo spessore dei bordi in pixel.Passare
fillimpostato 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,\re\r\nspostano 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.scalepuò essere aumentato per aumentare/diminuire la dimensione del testo sull’immagine. È possibile passare valori interi o a virgola mobile maggiori di 0.x_spacingconsente di aggiungere (se positivo) o sottrarre (se negativo) pixel x tra i caratteri.y_spacingconsente di aggiungere (se positivo) o sottrarre (se negativo) pixel y tra i caratteri (per testo su più righe).mono_spaceha 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_rotationpuò essere 0, 90, 180, 270 per ruotare ogni carattere nella stringa di questa quantità.char_hmirrorse True specchia orizzontalmente tutti i caratteri nella stringa.char_vflipse True ribalta verticalmente tutti i caratteri nella stringa.string_rotationpuò essere 0, 90, 180, 270 per ruotare la stringa di questa quantità.string_hmirrorse True specchia orizzontalmente la stringa.string_vflipse 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.sizecontrolla la lunghezza delle linee della croce.thicknesscontrolla 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.thicknesscontrolla 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 ecolor2è il colore della croce del centroide.sizeè la dimensione della croce del centroide,thicknesscontrolla la larghezza del contorno efillriempie il rettangolo.labelse fornita viene disegnata vicino al rettangolo, spostata dilabel_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.sizese maggiore di 0 fa sì che gli angoli vengano disegnati come cerchi di raggiosize.thicknesscontrolla lo spessore della linea in pixel.Passare
fillimpostato 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”
imageil 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_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà ribaltata orizzontalmente. Si noti che sey_scalenon è specificato, esso corrisponderà ax_scaleper mantenere il rapporto d’aspetto.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà ribaltata verticalmente. Si noti che sex_scalenon è specificato, esso corrisponderà ax_scaleper 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 passargb_channel=1questo estrarrà il canale verde dell’immagine sorgente RGB565 e lo disegnerà in scala di grigi sull’immagine di destinazione.alphacontrolla 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_palettese nonNonepuò 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 dirgb_channelse usata.alpha_palettese nonNonepuò essere un’immagine GRAYSCALE di 256 pixel totali da usare come palette alpha che modula il valorealphadell’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 dirgb_channelse usata.hintè un OR logico dei flag elencati in Flag di suggerimento (inclusoimage.BLACK_BACKGROUNDche qui è supportato).transformè unndarray3x3 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.sizecontrolla quanto sono grandi i keypoint.thicknesscontrolla lo spessore della linea in pixel.Passare
fillimpostato 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_thresholdcontrolla quanto qualsiasi pixel nell’area di riempimento può differire dal pixel di partenza originale.floating_thresholdcontrolla 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
invertcome True per ricolorare tutto ciò che è al di fuori dell’area connessa dal flood-fill.Passare
clear_backgroundcome 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 unImageper la visualizzazione. Il buffer dell’immagine deve essere un’immagine GRAYSCALE 320x320.Per ogni riga
csi.PIX_ON_EVENTal pixel dell’evento viene aggiunto+contrast; per ogni rigacsi.PIX_OFF_EVENTal pixel viene aggiunto-contrast. Gli eventi di trigger vengono ignorati. I valori dei pixel sono limitati a 0-255.clearse True ripristina il buffer dell’immagine abrightnessprima 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).brightnesscontrolla la linea di base grigio-medio a cui il buffer viene ripristinato quandoclearè True. Il valore predefinito 128 colloca gli eventi ON all’estremità chiara e gli eventi OFF all’estremità scura con uguale margine.contrastcontrolla 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.invertinverte la corrispondenza della soglia.zerose 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_bitmapse True, converte i dati dell’immagine in una bitmap a 1 bit per pixel. Per immagini molto piccole questo può richiederecopy=True.copyse 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 - pixelper 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.
imagepuò 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.
imagepuò 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.
imagepuò 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.
imagepuò 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.
imagepuò 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.
imagepuò 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.
maxse 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.
gammaapplicapow(pixel, 1/gamma)dopo la normalizzazione. Valori maggiori di 1.0 schiariscono; minori di 1.0 scuriscono.contrastapplicapixel * contrastdopo la normalizzazione.brightnessapplicapixel + brightnessdopo 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.
Metodi matematici¶
- negate() Image¶
Alias per
Image.invert.
- replace(image: Image | None = None, **kwargs) Image¶
Alias per
Image.draw_image(). Sostituisce questa immagine conimage(o trasforma questa immagine in-place seimageè omesso) usando i normali argomenti keyword didraw_image. L’argomentotransformè unndarray3x3 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.
imagepuò 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
imagepixel per pixel da questa immagine (self - image).imagepuò 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 - selfpixel per pixel. Altrimenti identico aImage.sub().
- min(image: Image, mask: Image | None = None) Image¶
Restituisce l’immagine minima di due immagini pixel per pixel.
imagepuò 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.
imagepuò 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||).
imagepuò 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 diimagein questa immagine.alphaè un intero 0-256; valori più vicini a 256 favoriscono l’immagine sorgente. Accetta tutti gli argomenti keyword diImage.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à.
adaptivese True, esegue l’equalizzazione adattiva dell’istogramma (più lenta ma generalmente migliore).clip_limitlimita 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ù dithresholdvicini sono cancellati (agisce come un’erosione standard sethresholdè 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ù dithresholdvicini sono impostati (agisce come una dilatazione standard sethresholdè 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()eImage.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()eImage.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.thresholdse True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria.offsetsposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno).invertinverte 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.thresholdse True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria.offsetsposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno).invertinverte 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.thresholdse True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria.offsetsposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno).invertinverte 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.biascontrolla la miscelazione min/max. 0 per il solo filtraggio min, 1.0 per il solo filtraggio max. Usandobiasè possibile filtrare l’immagine in min/max.thresholdse True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria.offsetsposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno).invertinverte 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.
sizecontrolla 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).thresholdse True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria.offsetsposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno).invertinverte 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.unsharpse 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).thresholdse True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria.offsetsposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno).invertinverte 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.sharpense 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).thresholdse True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria.offsetsposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno).invertinverte 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_sigmacontrolla la tolleranza di corrispondenza del colore; valori più grandi producono più sfocatura del colore.space_sigmacontrolla la sfocatura spaziale; valori più grandi producono più sfocatura dei pixel.thresholdse True, sottopone adattivamente a soglia l’output del filtro per ottenere un’immagine binaria.offsetsposta la binarizzazione (negativo rende più pixel bianchi, positivo ne rende meno).invertinverte 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=Trueper ri-proiettare nella direzione opposta.xeyspecificano la coordinata del centro della trasformazione in pixel dell’immagine. SexèNone(il valore predefinito) viene impostato a metà della larghezza dell’immagine; allo stesso modoyper 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=Trueper ri-proiettare nella direzione opposta.xeyspecificano la coordinata del centro della trasformazione in pixel dell’immagine. SexèNone(il valore predefinito) viene impostato a metà della larghezza dell’immagine; allo stesso modoyper 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_corroffset di pixel a virgola mobile dal centro. Può essere negativo o positivo.y_corroffset 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 chefovsi 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,hintetransformaccettano gli stessi valori diImage.draw_image().dssimse 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
roie restituisce un oggettoimage.histogram. Disponibile anche comeImage.get_hist()oImage.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.invertinverte 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) ol_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.differencepuò 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
roie restituisce un oggettoimage.statistics. Disponibile anche comeImage.get_stats()oImage.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.invertinverte 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) ol_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.differencepuò 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.invertinverte 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_strideey_stridecontrollano quanti pixel vengono saltati durante la valutazione dell’immagine.area_thresholdarea minima del bounding box; risultati più piccoli restituiscono None.pixels_thresholdconteggio 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.invertinverte 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_strideey_stridecontrollano quanti pixel vengono saltati durante la ricerca di un blob. Aumentare se si sa che i blob sono grandi.area_thresholdarea minima del bounding box; i blob più piccoli vengono filtrati.pixels_thresholdconteggio minimo di pixel sottoposti a soglia; i blob più piccoli vengono filtrati.mergese True unisce i blob i cui rettangoli delimitanti si intersecano.marginingrandisce/restringe i rettangoli delimitanti usati per l’intersezione. I blob uniti eseguono l’OR dei loro vettori di bitcode(un bit per soglia).threshold_cbviene chiamata per ogni blob dopo il thresholding; restituire True per mantenerlo, False per filtrarlo.merge_cbviene chiamata per ogni coppia di blob che sta per essere unita; restituire True per consentire l’unione, False per impedirla.x_hist_bins_maxse diverso da zero, popola ogni blob con una proiezione x_histogram usando questo numero di bin.y_hist_bins_maxse 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_strideey_stridecontrollano quanti pixel vengono saltati durante la trasformata di hough.thresholdmagnitudine minima della linea (somma delle magnitudini sobel lungo la linea); le linee al di sotto di questo valore vengono filtrate.theta_marginerho_margincontrollano 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_strideey_stridecontrollano quanti pixel vengono saltati durante la trasformata di hough.thresholdmagnitudine minima del cerchio (somma delle magnitudini sobel lungo il cerchio); i cerchi al di sotto di questo valore vengono filtrati.x_margin,y_marginer_margincontrollano l’unione: i cerchi entro queste soglie vengono uniti.r_minraggio minimo del cerchio. Il valore predefinito è 2.r_maxraggio massimo del cerchio. Il valore predefinito èmin(roi.w/2, roi.h/2).r_stepdimensione 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.thresholdmagnitudine 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
roie restituisce una lista di oggettiimage.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
roie restituisce una lista di oggettiimage.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.fxefysono le lunghezze focali X e Y della camera in pixel.cxecysono il centro dell’immagine, tipicamenteimage.width()/2eimage.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
roie restituisce una lista di oggettiimage.datamatrix.roiè la tupla del rettangolo della regione di interesse (x, y, w, h). Il valore predefinito è il rettangolo dell’immagine.effortcontrolla 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
roie restituisce una lista di oggettiimage.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
templateusando la correlazione di fase. Restituisce un oggettoimage.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.roietemplate_roidevono avere la stessa larghezza e altezza.logpolarse True restituisce il cambiamento di rotazione/scala invece della traslazione x/y.fix_rotation_scalese True, calcola lo spostamento dopo aver allineato rotazione e scala (significativo solo quandologpolar=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
templatecorrisponde 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) oimage.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 (vediimage.HaarCascade()).threshold(0.0-1.0). Valori più bassi aumentano il tasso di rilevamento e il tasso di falsi positivi.scaledeve 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.normalizedse True, disabilita l’estrazione di keypoint a multi-risoluzione.scale_factordeve 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_FASToimage.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 dellaroi.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.
reversedPer 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.thresholdse la somma delle differenze assolute tra due blocchi è minore o uguale a questa soglia, sono considerati corrispondenti.
- selective_search(threshold: int = 500, size: int = 20, a1: float = 1.0, a2: float = 1.0, a3: float = 1.0) List[Tuple[int, int, int, int]]¶
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,a3sono i pesi di similarità colore/texture/dimensione usati durante l’unione delle regioni.