třída Image – objekt obrazu¶
Image je ústředním datovým typem modulu image – jde o pixelový buffer v paměti, nad nímž pracuje každá vykreslovací rutina, každý filtr, každá geometrická transformace a každá rutina pro extrakci příznaků. Každý snímek vystupující z csi.CSI.snapshot() je objekt Image; stejně tak každý snímek načtený z disku, dekódovaný z JPEG nebo PNG, alokovaný z numpy-stylového pole ndarray nebo vytvořený jako prázdné kreslicí plátno.
Objekt Image je popsán třemi čísly – width, height a pixformat – plus souvislým pixelovým bufferem. Formát pixelů určuje jak rozložení v paměti, tak i to, které operace jsou k dispozici:
BINARY (1 bpp) – 1 bit na pixel; používá se pro morfologii a prahování.
GRAYSCALE (8 bpp) – 1 bajt na pixel; kanonický formát pro většinu metod počítačového vidění (AprilTag, hrany, ORB, optický tok).
RGB565 (16 bpp) – 2 bajty na pixel (5R/6G/5B); výchozí barevný formát.
BAYER (8 bpp) – surová data Bayerovy mozaiky přímo ze senzoru. Většina metod počítačového vidění není na Bayerových obrazech dostupná; nejprve proveďte debayering do GRAYSCALE / RGB565.
YUV422 (16 bpp) – barva s chroma podvzorkováním 4:2:2, dva bajty na pixel. Přímo na YUV422 funguje jen několik metod.
JPEG / PNG – komprimované buffery. Operace na úrovni pixelů vyžadují nejprve
to_grayscale()neboto_rgb565().
Odkud objekty Image pocházejí¶
Objekt Image lze získat čtyřmi způsoby:
Ze snímkového bufferu kamery –
csi.CSI().snapshot()vrací další zachycený snímek. Vrácený objekt je tenká obálka kolem paměti snímkového bufferu kamery, takže jakákoli kreslicí / filtrovací operace na něm mění to, co se odesílá do náhledu v IDE a na displej.Ze souboru – předejte konstruktoru
Imageřetězec s cestou. Formáty BMP, PGM, PPM, JPEG a PNG se dekódují přímo do RAM (nebo do snímkového bufferu kamery, pokud jecopy_to_fb=True).Z ndarray – předejte float32 pole tvaru
(h, w)nebo(h, w, 3). Pixely se škálují z rozsahu0.0 -- 255.0do formátu GRAYSCALE, resp. RGB565.Prázdný – předejte
(width, height, pixformat)pro alokaci kreslicí plochy vyplněné nulami. Pro komprimované formáty pixelů (JPEG/PNG) je vyžadován argumentbuffer=, který obsahuje komprimovaný proud bajtů.
Typická smyčka zachycení-zpracování-zobrazení¶
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.
Indexování, délka, iterace a přístup jako k bajtům¶
Indexování –
img[i]čte pixeli(lineárně, po řádcích).img[i] = valuejej zapisuje. Pixely grayscale / Bayer jsou 8bitová celá čísla, pixely RGB565 / YUV422 jsou 16bitová zabalená celá čísla, binární pixely jsou 0 / 1. U obrazů JPEG / PNG je indexovým prostorem komprimovaný proud bajtů, nikoli pixely.Délka –
len(img)vrací počet pixelů u nekomprimovaných formátů nebo počet bajtů u komprimovaných formátů.Iterace –
for px in img: ...prochází pole pixelů ve stejném pořadí jako indexování pomocí[].Přístup jako k bajtům –
Imageposkytuje protokol pro čtení bufferu, takže jej můžete předat přímo čemukoli, co přijímábytes/bytearray(např.uart.write(img),socket.send(img),hashlib.sha256(img)). Pro získání pohledu pro čtení i zápis použijte místo tohobytearray().
Příznaky nápovědy (hint)¶
Mnoho metod Image přijímá argument hint, který je logickým OR následujících příznaků:
image.AREA: Při zmenšování použít plošné škálování namísto výchozí metody nejbližšího souseda.
image.BILINEAR: Použít bilineární škálování namísto výchozího škálování nejbližším sousedem.
image.BICUBIC: Použít bikubické škálování namísto výchozího škálování nejbližším sousedem.
image.CENTER: Vystředit kreslený obraz na displeji. Aplikuje se po škálování.
image.HMIRROR: Horizontálně zrcadlit obraz.
image.VFLIP: Vertikálně překlopit obraz.
image.TRANSPOSE: Transponovat obraz (prohodit x/y).
image.EXTRACT_RGB_CHANNEL_FIRST: Provést extrakci rgb_channel před škálováním.
image.APPLY_COLOR_PALETTE_FIRST: Aplikovat barevnou paletu před škálováním.
image.SCALE_ASPECT_KEEP: Škálovat kreslený obraz tak, aby se vešel do displeje.
image.SCALE_ASPECT_EXPAND: Škálovat kreslený obraz tak, aby vyplnil displej (vede k oříznutí)
image.SCALE_ASPECT_IGNORE: Škálovat kreslený obraz tak, aby vyplnil displej (vede k roztažení).
image.ROTATE_90: Otočit obraz o 90 stupňů (jde pouze o VFLIP | TRANSPOSE).
image.ROTATE_180: Otočit obraz o 180 stupňů (jde pouze o HMIRROR | VFLIP).
image.ROTATE_270: Otočit obraz o 270 stupňů (jde pouze o HMIRROR | TRANSPOSE).
image.BLACK_BACKGROUND: Předpokládat, že obraz pozadí, na který se kreslí, je černý, což urychluje prolínání. Podporováno pouze metodamiImage.draw_image()aImage.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)¶
Pokud je
argřetězec, vytvoří se nový objekt obrazu ze souboru na cestěarg. Podporováno je načítání souborů obrazů bmp/pgm/ppm/jpg/jpeg/png z disku. Pokud jecopy_to_fbtrue, obraz se zkopíruje do snímkového bufferu namísto alokace na haldě.Pokud je
argtypundarray, vytvoří se nový objekt obrazu zndarray. Objektyndarrays tvarem(w, h)jsou považovány za obrazy ve stupních šedi,(w, h, 3)za obrazy RGB565. V současné době jsou podporována pouze polendarraystypu float32. Pokud při vytváření obrazu tímto způsobem předáte argumentbuffer, použije se k uložení dat obrazu namísto alokace prostoru na haldě. Pokud jecopy_to_fbtrue, obraz se zkopíruje do snímkového bufferu namísto alokace na haldě nebo použitíbuffer.Pokud je
argtypuint, je považován za šířku nového obrazu a musí následovat hodnotaheighta hodnotaformatpro vytvoření nového prázdného objektu obrazu.formatmůže být libovolná hodnota formátu pixelů obrazu, jako napříkladimage.GRAYSCALE. Obraz bude inicializován na samé nuly. Všimněte si, že pro komprimované formáty obrazu se očekává hodnotabuffer.bufferje při tomto způsobu vytváření obrazů považován za zdroj dat obrazu. Pokud se použije scopy_to_fb, data zbufferse zkopírují do snímkového bufferu. Pokud chcete vytvořit obraz JPEG z objektubytes()nebobytearray()ve formátu JPEG, můžete předatwidth,height,image.JPEGpro JPEG spolu s nastavenímbufferna proud bajtů JPEG a vytvořit tak obraz JPEG.Obrazy podporují notaci „[]“. Použijte
image[index] = 8/16-bit valuek přiřazení pixelu obrazu neboimage[index]k získání pixelu obrazu, kterým bude buď 8bitová hodnota u obrazů grayscale/bayer, nebo 16bitová hodnota u obrazů RGB565/YUV. Binární obrazy vracejí 1bitovou hodnotu.U obrazů JPEG umožňuje „[]“ přístup ke komprimovanému blobu obrazu JPEG jako k poli bajtů. Čtení a zápis do datového pole je však neprůhledné, protože obrazy JPEG jsou komprimované proudy bajtů.
Obrazy také podporují operace čtení z bufferu. Obrazy můžete předávat nejrůznějším funkcím MicroPythonu, jako by byl obraz objektem typu pole bajtů. Konkrétně, pokud chcete obraz přenést, můžete jej jednoduše předat zápisovým funkcím UART/SPI/I2C, které jej automaticky odešlou.
Základní metody¶
- format() int¶
Vrací
image.GRAYSCALEpro obrazy ve stupních šedi,image.RGB565pro obrazy RGB565,image.BAYERpro obrazy s Bayerovým vzorem aimage.JPEGpro obrazy JPEG.
- bytearray() bytearray¶
Vrací objekt
bytearray, který ukazuje na data obrazu pro čtení/zápis na úrovni bajtů.Poznámka
Objekty obrazu jsou automaticky přetypovány na objekty
bytes, když jsou předány ovladači MicroPythonu, který vyžaduje objekt typubytes. Jde o přístup pouze pro čtení. Pro přístup pro čtení i zápis zavolejtebytearray().
- get_pixel(x: int, y: int, rgbtuple: bool | None = None) int | Tuple[int, int, int]¶
U obrazů ve stupních šedi: Vrací hodnotu pixelu ve stupních šedi na pozici (x, y). U obrazů RGB565: Vrací RGB888 n-tici pixelu (r, g, b) na pozici (x, y). U obrazů s Bayerovým vzorem: Vrací hodnotu pixelu na pozici (x, y).
Vrací None, pokud je
xneboymimo obraz.xaylze předat buď samostatně, nebo jako n-tici.rgbtuplepokud je True, způsobí, že tato metoda vrátí RGB888 n-tici. Jinak tato metoda vrátí celočíselnou hodnotu základního pixelu. Tj. u obrazů RGB565 tato metoda vrátí hodnotu RGB565. U obrazů RGB565 je výchozí True, jinak False.Není podporováno u komprimovaných obrazů.
Poznámka
Image.get_pixel()aImage.set_pixel()jsou jediné metody, které umožňují manipulovat s obrazy s Bayerovým vzorem. Obrazy s Bayerovým vzorem jsou doslovné obrazy, kde pixely v obraze jsou R/G/R/G/atd. pro sudé řádky a G/B/G/B/atd. pro liché řádky. Každý pixel je 8bitový. Pokud tuto metodu zavoláte s nastavenýmrgbtuple, pakImage.get_pixel()provede debayering zdrojového obrazu na dané pozici pixelu a vrátí platnou RGB888 n-tici pro danou pozici pixelu.
- set_pixel(x: int, y: int, pixel: int | Tuple[int, int, int]) Image¶
U obrazů ve stupních šedi: Nastaví pixel na pozici (x, y) na hodnotu ve stupních šedi
pixel. U obrazů RGB565: Nastaví pixel na pozici (x, y) na RGB888 n-tici (r, g, b)pixel. U obrazů s Bayerovým vzorem: Nastaví hodnotu pixelu na pozici (x, y) na hodnotupixel.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..xaylze předat buď samostatně, nebo jako n-tici.pixelmůže být buď RGB888 n-tice (r, g, b), nebo základní hodnota pixelu (tj. hodnota RGB565 u obrazů RGB565 nebo 8bitová hodnota u obrazů ve stupních šedi).Není podporováno u komprimovaných obrazů.
Poznámka
Image.get_pixel()aImage.set_pixel()jsou jediné metody, které umožňují manipulovat s obrazy s Bayerovým vzorem. Obrazy s Bayerovým vzorem jsou doslovné obrazy, kde pixely v obraze jsou R/G/R/G/atd. pro sudé řádky a G/B/G/B/atd. pro liché řádky. Každý pixel je 8bitový. Pokud tuto metodu zavoláte s RGB888 n-ticí, extrahuje se hodnota ve stupních šedi z této RGB888 n-tice a nastaví se na pozici pixelu.
Konverzní metody¶
- to_ndarray(dtype: str, buffer: bytes | bytearray | memoryview | None = None) ndarray¶
Vrací objekt
ndarrayvytvořený z obrazu. Toto funguje v současné době pouze u obrazů GRAYSCALE nebo RGB565.dtypemůže býtb,Bnebofpro vytvoření znaménkového 8bitového, neznaménkového 8bitového nebo 32bitového floatového polendarray. Obrazy GRAYSCALE jsou přímo převedeny na neznaménkové 8bitové objektyndarray. U znaménkových 8bitových objektůndarrayjsou hodnoty (0:255) mapovány na (-127:128). U 32bitových floatových objektůndarrayjsou hodnoty mapovány na (0.0:255.0). Obrazy RGB565 jsou převedeny na třísložkové objektyndarraya na každou složku je v závislosti nadtypeaplikován stejný proces popsaný výše pro obrazy GRAYSCALE. Všimněte si, žedtypepřijímá také celočíselné hodnoty (např.ord()) znakůb,Baf.bufferpokud neníNone, je objektbytearraypoužitý jako buffer prondarray. Pokud jeNone, alokuje se na haldě nový buffer pro uložení dat obrazundarray. Argumentbuffermůžete použít k přímé alokacindarrayv předem alokovaném bufferu, čímž ušetříte alokaci na haldě a operaci kopírování.Vrácené pole
ndarraymá tvar(height, width)u obrazů GRAYSCALE a(height, width, 3)u obrazů 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¶
Převede obraz na bitmapový obraz (1 bit na pixel).
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Poznámka
Bitmapové obrazy jsou jako obrazy ve stupních šedi s pouhými dvěma hodnotami pixelů - 0 a 1. Bitmapové obrazy jsou navíc zabaleny tak, že ukládají pouze 1 bit na pixel, čímž jsou velmi malé. Knihovna obrazů OpenMV umožňuje použít bitmapové obrazy všude tam, kde lze použít obrazy
sensor.GRAYSCALEasensor.RGB565. Mnoho operací však při aplikaci na bitmapové obrazy nedává žádný smysl, protože bitmapové obrazy mají pouze 2 hodnoty. OpenMV doporučuje používat bitmapové obrazy jako hodnotymaskv operacích apod., protože se snadno vejdou na haldu MicroPythonu. A konečně, hodnoty pixelů bitmapového obrazu 0 a 1 jsou při aplikaci na obrazysensor.GRAYSCALEnebosensor.RGB565interpretovány jako černá a bílá. Knihovna automaticky zajišťuje konverzi.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na obraz ve stupních šedi (8 bitů na pixel).
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na obraz RGB565 (16 bitů na pixel).
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na duhový obraz RGB565 (16 bitů na pixel).
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na obraz RGB565 ironbow (16 bitů na pixel).
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na hloubkový obraz RGB565 (16 bitů na pixel).
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může býtimage.PALETTE_DEPTHnebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na obraz RGB565 Dark Event (16 bitů na pixel).
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na obraz RGB565 Light Event (16 bitů na pixel).
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na obraz JPEG.
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.qualityřídí kvalitu komprese obrazu jpeg. Hodnota může být mezi 0 a 100.subsamplingmůže být:image.JPEG_SUBSAMPLING_AUTO: Použít nejlepší podvzorkování pro obraz na základě kvality.image.JPEG_SUBSAMPLING_444: Použít podvzorkování 4:4:4.image.JPEG_SUBSAMPLING_422: Použít podvzorkování 4:2:2.image.JPEG_SUBSAMPLING_420: Použít podvzorkování 4:2:0.
Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na obraz PNG.
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Převede obraz na obraz JPEG.
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.qualityřídí kvalitu komprese obrazu jpeg. Hodnota může být mezi 0 a 100.subsamplingmůže být:image.JPEG_SUBSAMPLING_AUTO: Použít nejlepší podvzorkování pro obraz na základě kvality.image.JPEG_SUBSAMPLING_444: Použít podvzorkování 4:4:4.image.JPEG_SUBSAMPLING_422: Použít podvzorkování 4:2:2.image.JPEG_SUBSAMPLING_420: Použít podvzorkování 4:2:0.
Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Poznámka
Image.compressje alias proImage.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¶
Vytvoří hlubokou kopii objektu obrazu.
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Upraví obraz na místě, aniž by změnil základní typ obrazu.
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Upraví obraz na místě, aniž by změnil základní typ obrazu.
x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (s výjimkouimage.BLACK_BACKGROUND, který zde není podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.copypokud je True, vytvoří na haldě hlubokou kopii převedeného obrazu namísto převodu původního obrazu na místě.copy_to_fbpokud je True, obraz se načte přímo do snímkového bufferu.copy_to_fbmá prioritu předcopy. To nemá žádný zvláštní účinek, pokud je obraz již ve snímkovém bufferu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Poznámka
Image.scaleje alias proImage.crop.
- save(path: str, roi: Tuple[int, int, int, int] | None = None, quality: int = 50) Image¶
Uloží kopii obrazu do souborového systému na cestu
path.Podporuje soubory obrazů bmp/pgm/ppm/jpg/jpeg. Všimněte si, že obrazy komprimované jako jpeg nelze uložit do nekomprimovaného formátu.
roije obdélník oblasti zájmu (x, y, w, h), ze kterého se má uložit. Pokud není zadán, rovná se obdélníku obrazu, což zkopíruje celý obraz. Tento argument není použitelný pro obrazy JPEG.qualityje kvalita komprese jpeg použitá k uložení obrazu do formátu jpeg, pokud obraz ještě není komprimován (0-100) (int).Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
Vykreslovací metody¶
- clear(mask: Image | None = None) Image¶
Nastaví všechny pixely v obraze na nulu (velmi rychle).
maskje další obraz použitý jako maska na úrovni pixelů pro danou operaci. Maska by měla být obraz pouze s černými nebo bílými pixely a měla by mít stejnou velikost jako obraz, na kterém se operace provádí. Upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů.
- draw_line(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image¶
Nakreslí čáru z (x0, y0) do (x1, y1) na obraze. Můžete předat x0, y0, x1, y1 buď samostatně, nebo jako n-tici (x0, y0, x1, y1).
colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.thicknessřídí, jak tlustá je čára v pixelech.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Nakreslí obdélník na obraze. Můžete předat x, y, w, h buď samostatně, nebo jako n-tici (x, y, w, h).
colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.thicknessřídí, jak tlusté jsou čáry v pixelech.Nastavte
fillna True pro vyplnění obdélníku.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- draw_circle(x: int, y: int, radius: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image¶
Nakreslí kruh na obraze. Můžete předat x, y, radius buď samostatně, nebo jako n-tici (x, y, radius).
colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.thicknessřídí, jak tlusté jsou hrany v pixelech.Nastavte
fillna True pro vyplnění kruhu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Nakreslí elipsu na obraze. Můžete předat cx, cy, rx, ry a rotaci (ve stupních) buď samostatně, nebo jako n-tici (cx, yc, rx, ry, rotation).
colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.thicknessřídí, jak tlusté jsou hrany v pixelech.Nastavte
fillna True pro vyplnění elipsy.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Nakreslí text 8x10 počínaje pozicí (x, y) v obraze. Můžete předat x, y buď samostatně, nebo jako n-tici (x, y).
textje řetězec, který se má zapsat do obrazu. Konce řádků\n,\ra\r\nposunou kurzor na další řádek.colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.scalelze zvýšit pro zvětšení/zmenšení velikosti textu na obraze. Můžete předat celočíselné hodnoty větší než 0 nebo hodnoty s plovoucí desetinnou čárkou.x_spacingumožňuje přidat (pokud je kladné) nebo odebrat (pokud je záporné) x pixelů mezi znaky.y_spacingumožňuje přidat (pokud je kladné) nebo odebrat (pokud je záporné) y pixelů mezi znaky (pro víceřádkový text).mono_spacemá výchozí hodnotu True, která vynutí pevné rozestupy textu. U velkých měřítek textu to vypadá hrozně. Nastavte na False pro získání rozestupů znaků bez pevné šířky, což vypadá MNOHEM lépe.char_rotationmůže být 0, 90, 180, 270 pro otočení každého znaku v řetězci o tuto hodnotu.char_hmirrorpokud je True, horizontálně zrcadlí všechny znaky v řetězci.char_vflippokud je True, vertikálně překlopí všechny znaky v řetězci.string_rotationmůže být 0, 90, 180, 270 pro otočení řetězce o tuto hodnotu.string_hmirrorpokud je True, horizontálně zrcadlí řetězec.string_vflippokud je True, vertikálně překlopí řetězec.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- draw_cross(x: int, y: int, color: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1) Image¶
Nakreslí křížek na pozici x, y. Můžete předat x, y buď samostatně, nebo jako n-tici (x, y).
colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.sizeřídí, jak dlouho se čáry křížku rozprostírají.thicknessřídí, jak tlusté jsou hrany v pixelech.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- draw_arrow(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image¶
Nakreslí šipku z (x0, y0) do (x1, y1) na obraze. Můžete předat x0, y0, x1, y1 buď samostatně, nebo jako n-tici (x0, y0, x1, y1).
colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.thicknessřídí, jak tlustá je čára v pixelech.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Nakreslí výsledek detekce do obrazu.
detectionje 6-tice(rx, ry, rw, rh, cx, cy)popisující ohraničující obdélník a těžiště (typicky vrácené kódem neuronové sítě nebo sledování barev).color1je barva obdélníku acolor2je barva křížku těžiště.sizeje velikost křížku těžiště,thicknessřídí šířku obrysu afillvyplňuje obdélník.labelpokud je zadán, vykreslí se poblíž obdélníku, posunutý olabel_offset(x, y).Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Nakreslí hrany čar mezi seznamem rohů vráceným metodami jako
blob.corners. Rohy jsou čtyřhodnotová n-tice dvouhodnotových n-tic x/y. Např. [(x1,y1),(x2,y2),(x3,y3),(x4,y4)].colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.sizepokud je větší než 0, způsobí, že rohy budou nakresleny jako kruhy o poloměrusize.thicknessřídí, jak tlustá je čára v pixelech.Nastavte
fillna True pro vyplnění rohových kruhů, pokud jsou nakresleny.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Nakreslí
image, jehož levý horní roh začíná na pozici x, y. Můžete předat x, y buď samostatně, nebo jako n-tici (x, y). Tato metoda automaticky zpracuje vykreslení předaného obrazu do správného formátu pixelů pro cílový obraz a zároveň bezproblémově zpracuje ořezávání.Místo objektu obrazu můžete této metodě také předat cestu, aby automaticky načetla obraz z disku a použila jej v jednom kroku. Např.
draw_image("test.jpg").x_scaleřídí, jak moc je zobrazený obraz škálován ve směru x (float). Pokud je tato hodnota záporná, obraz bude horizontálně překlopen. Všimněte si, že pokud není zadánoy_scale, bude odpovídatx_scale, aby se zachoval poměr stran.y_scaleřídí, jak moc je zobrazený obraz škálován ve směru y (float). Pokud je tato hodnota záporná, obraz bude vertikálně překlopen. Všimněte si, že pokud není zadánox_scale, bude odpovídatx_scale, aby se zachoval poměr stran.roije n-tice obdélníku oblasti zájmu (x, y, w, h) zdrojového obrazu, který se má vykreslit. To umožňuje extrahovat pouze pixely v ROI, škálovat je a vykreslit do cílového obrazu.rgb_channelje RGB kanál (0=R, G=1, B=2), který se má extrahovat z obrazu RGB565 (pokud je předán) a vykreslit do cílového obrazu. Například pokud předátergb_channel=1, extrahuje se zelený kanál zdrojového obrazu RGB565 a vykreslí se ve stupních šedi do cílového obrazu.alphařídí, jak velká část zdrojového obrazu se prolne do cílového obrazu. Hodnota 255 vykreslí neprůhledný zdrojový obraz, zatímco hodnota nižší než 255 vytvoří prolnutí mezi zdrojovým a cílovým obrazem. Hodnota 0 nevede k žádné úpravě cílového obrazu.color_palettepokud neníNone, může být enum barevné palety nebo obraz RGB565 o celkem 256 pixelech, který se použije jako vyhledávací tabulka barev pro hodnotu ve stupních šedi zdrojového obrazu. Aplikuje se po extrakcirgb_channel, pokud je použita.alpha_palettepokud neníNone, může být obraz GRAYSCALE o celkem 256 pixelech, který se použije jako alfa paleta modulující hodnotualphakresleného zdrojového obrazu na úrovni jednotlivých pixelů, což vám umožní přesně řídit hodnotu alfa pixelů na základě jejich hodnoty ve stupních šedi. Hodnota pixelu 255 v alfa vyhledávací tabulce je neprůhledná, zatímco cokoli menšího než 255 se stává průhlednějším až do 0. Aplikuje se po extrakcirgb_channel, pokud je použita.hintje logický OR příznaků uvedených v Příznaky nápovědy (včetněimage.BLACK_BACKGROUND, který je zde podporován).transformje 3x3ndarraypoužité k provedení perspektivní transformace obrazu. V současné době podporováno pouze na OpenMV Cam N6, protože má GPU, které to dokáže provést hardwarově.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..
- 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¶
Nakreslí klíčové body objektu klíčových bodů na obraze. Můžete také předat seznam trojhodnotových n-tic obsahujících (x, y, rotation_angle_in_degrees) pro opětovné použití této metody k vykreslení glyfů klíčových bodů, což jsou kruhy s čárou ukazující v určitém směru.
colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.sizeřídí, jak velké jsou klíčové body.thicknessřídí, jak tlustá je čára v pixelech.Nastavte
fillna True pro vyplnění klíčových bodů.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Provede záplavové vyplnění oblasti obrazu počínaje pozicí x, y. Můžete předat x, y buď samostatně, nebo jako n-tici (x, y).
seed_thresholdřídí, jak moc se může jakýkoli pixel ve vyplňované oblasti lišit od původního výchozího pixelu.floating_thresholdřídí, jak moc se může jakýkoli pixel ve vyplňované oblasti lišit od jakýchkoli sousedních pixelů.colorje RGB888 n-tice pro obrazy Grayscale nebo RGB565. Výchozí je bílá. Můžete však také předat základní hodnotu pixelu (0-255) pro obrazy ve stupních šedi nebo hodnotu RGB565 pro obrazy RGB565.Předejte
invertjako True pro přebarvení všeho mimo souvislou oblast záplavového vyplnění.Předejte
clear_backgroundjako True pro vynulování zbytku pixelů, které záplavové vyplnění nepřebarvilo.maskje další obraz použitý jako maska na úrovni pixelů pro danou operaci. Maska by měla být obraz pouze s černými nebo bílými pixely a měla by mít stejnou velikost jako obraz, na kterém se operace provádí. Při záplavovém vyplňování se vyhodnocují pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
Tato metoda není dostupná na OpenMV Cam M4.
- draw_event_histogram(array: ndarray, clear: bool = True, brightness: int = 128, contrast: int = 16) Image¶
Rasterizuje pole událostí ndarray (vyplněné pomocí
csi.IOCTL_GENX320_READ_EVENTS) naImagepro vizualizaci. Buffer obrazu musí být obraz GRAYSCALE o rozměrech 320x320.Pro každý řádek
csi.PIX_ON_EVENTse k pixelu události přičte+contrast; pro každý řádekcsi.PIX_OFF_EVENTse k pixelu přičte-contrast. Spouštěcí události jsou ignorovány. Hodnoty pixelů jsou omezeny na rozsah 0-255.clearpokud je True, resetuje buffer obrazu nabrightnesspřed kreslením — každý snímek se stává čerstvým vykreslením pouze událostí. Nastavte na False pro akumulaci událostí přes více volání (užitečné pro stopy pohybu s dlouhou expozicí).brightnessřídí základní hodnotu střední šedi, na kterou se buffer resetuje, když jeclearTrue. Výchozí hodnota 128 umisťuje události ON na světlý konec a události OFF na tmavý konec se stejnou rezervou.contrastřídí, o kolik každá událost posune svůj pixel — vyšší hodnoty způsobí, že události vyniknou, za cenu rychlého nasycení, když na stejný pixel dopadne mnoho událostí.
Maskovací metody¶
- mask_rectangle(x: int, y: int, w: int, h: int) Image¶
Vynuluje obdélníkovou část obrazu. Pokud nejsou zadány žádné argumenty, tato metoda vynuluje střed obrazu.
Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- mask_circle(x: int, y: int, radius: int) Image¶
Vynuluje kruhovou část obrazu. Pokud nejsou zadány žádné argumenty, tato metoda vynuluje střed obrazu.
Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- mask_ellipse(x: int, y: int, radius_x: int, radius_y: int, rotation_angle_in_degrees: int) Image¶
Vynuluje elipsovitou část obrazu. Pokud nejsou zadány žádné argumenty, tato metoda vynuluje střed obrazu.
Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
Binární metody¶
- binary(thresholds: List[Tuple[int, int]], invert: bool = False, zero: bool = False, mask: Image | None = None, to_bitmap: bool = False, copy: bool = False) Image¶
Nastaví všechny pixely v obraze na černou nebo bílou podle toho, zda každý pixel spadá do některé z prahových n-tic v
thresholds.thresholdsje seznam n-tic(lo, hi)u obrazů ve stupních šedi nebo n-tic(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)u obrazů RGB565. Prohozené hodnoty min/max jsou automaticky opraveny; chybějící složky mají výchozí maximální rozsah.invertinvertuje shodu s prahem.zeropokud je True, vynuluje prahované pixely a ostatní ponechá nedotčené.maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.to_bitmappokud je True, převede data obrazu na bitmapu s 1 bitem na pixel. U velmi malých obrazů to může vyžadovatcopy=True.copypokud je True, vrátí nový obraz na haldě namísto úpravy zdrojového obrazu.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- invert() Image¶
Invertuje všechny hodnoty pixelů v obraze (každý pixel se stane
255 - pixelu 8bitových kanálů).Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
- b_and(image: Image, mask: Image | None = None) Image¶
Provede logické AND tohoto obrazu s jiným obrazem.
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- b_nand(image: Image, mask: Image | None = None) Image¶
Provede logické NAND tohoto obrazu s jiným obrazem.
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- b_or(image: Image, mask: Image | None = None) Image¶
Provede logické OR tohoto obrazu s jiným obrazem.
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- b_nor(image: Image, mask: Image | None = None) Image¶
Provede logické NOR tohoto obrazu s jiným obrazem.
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- b_xor(image: Image, mask: Image | None = None) Image¶
Provede logické XOR tohoto obrazu s jiným obrazem.
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- b_xnor(image: Image, mask: Image | None = None) Image¶
Provede logické XNOR tohoto obrazu s jiným obrazem.
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
Metody ISP¶
- awb(max: bool = False) Image¶
Provede automatické vyvážení bílé na obraze pomocí algoritmu gray-world. Pracuje na surových obrazech Bayer nebo RGB565. Nemá žádný účinek na binární obrazy / obrazy ve stupních šedi.
maxpokud je True, použije místo toho algoritmus white-patch.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů yuv.
- ccm(matrix: List[List[float]]) Image¶
Vynásobí předanou maticí korekce barev s plovoucí desetinnou čárkou s obrazem. Matice mohou být 3x3 nebo 3x4 (s ofsetovým sloupcem), ve formě vnořeného seznamu nebo plochého seznamu:
[[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]
Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
- gamma(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image¶
Upraví gamu, kontrast a jas obrazu.
gammaaplikujepow(pixel, 1/gamma)po normalizaci. Hodnoty větší než 1.0 zesvětlují; menší než 1.0 ztmavují.contrastaplikujepixel * contrastpo normalizaci.brightnessaplikujepixel + brightnesspo normalizaci.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
Matematické metody¶
- negate() Image¶
Alias pro
Image.invert.
- replace(image: Image | None = None, **kwargs) Image¶
Alias pro
Image.draw_image(). Nahradí tento obraz obrazemimage(nebo transformuje tento obraz na místě, pokud jeimagevynecháno) pomocí standardních klíčových argumentůdraw_image. Argumenttransformje 3x3ndarraypopisující perspektivní transformaci (podporováno pouze na kamerách OpenMV s povoleným ULAB).
- assign(image: Image | None = None, **kwargs) Image¶
Alias pro
Image.replace().
- set(image: Image | None = None, **kwargs) Image¶
Alias pro
Image.replace().
- add(image: Image, mask: Image | None = None) Image¶
Přičte obraz po pixelech k tomuto.
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- sub(image: Image, mask: Image | None = None) Image¶
Odečte
imagepo pixelech od tohoto obrazu (self - image).imagemůže být buď objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm), nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Tato metoda také přijímá celou sadu klíčových argumentů
Image.draw_image()(x,y,x_scale,y_scale,roi,rgb_channel,alpha,color_palette,alpha_palette,hint,transform).Není podporováno u komprimovaných obrazů ani obrazů bayer.
- rsub(image: Image, mask: Image | None = None) Image¶
Obrácené odečtení: nahradí tento obraz výrazem
image - selfpo pixelech. Jinak identické sImage.sub().
- min(image: Image, mask: Image | None = None) Image¶
Vrací minimální obraz dvou obrazů po pixelech.
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- max(image: Image, mask: Image | None = None) Image¶
Vrací maximální obraz dvou obrazů po pixelech.
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- difference(image: Image, mask: Image | None = None) Image¶
Vrací obraz absolutního rozdílu mezi dvěma obrazy (např. ||a-b||).
imagemůže být objekt obrazu, cesta k souboru nekomprimovaného obrazu (bmp/pgm/ppm) nebo skalární hodnota (RGB888 n-tice nebo základní hodnota pixelu).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
- blend(image: Image, x: int = 0, y: int = 0, alpha: int = 128, mask: Image | None = None, **kwargs) Image¶
Alias pro
Image.draw_image(). Alfa-prolneimagedo tohoto obrazu.alphaje celé číslo 0-256; hodnoty blíže k 256 upřednostňují zdrojový obraz. Přijímá všechny klíčové argumentyImage.draw_image().
- histeq(adaptive: bool = False, clip_limit: float = -1, mask: Image | None = None) Image¶
Spustí ekvalizaci histogramu na obraze pro normalizaci kontrastu a jasu.
adaptivepokud je True, spustí adaptivní ekvalizaci histogramu (pomalejší, ale obecně lepší).clip_limitomezuje kontrast v adaptivní variantě (malá hodnota jako 10 produkuje dobré výsledky CLAHE).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
Filtrovací metody¶
- erode(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Odstraní pixely z hran segmentovaných oblastí. Konvoluje jádro
((size*2)+1)x((size*2)+1)přes obraz a vymaže středový pixel, pokud je více nežthresholdsousedů prázdných (působí jako standardní eroze, pokud jethresholdNone).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
- dilate(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Přidá pixely k hranám segmentovaných oblastí. Konvoluje jádro
((size*2)+1)x((size*2)+1)přes obraz a nastaví středový pixel, pokud je více nežthresholdsousedů nastaveno (působí jako standardní dilatace, pokud jethresholdNone).maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
- open(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Provede erozi a poté dilataci. Viz
Image.erode()aImage.dilate().maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
- close(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Provede dilataci a poté erozi. Viz
Image.dilate()aImage.erode().maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
- top_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Vrací rozdíl obrazu mezi obrazem a obrazem po
Image.open().maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
- black_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Vrací rozdíl obrazu mezi obrazem a obrazem po
Image.close().maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
- mean(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Standardní filtr středního rozostření pomocí krabicového filtru.
sizeje velikost jádra. Použijte 1 (jádro 3x3), 2 (jádro 5x5) atd.thresholdpokud je True, adaptivně prahuje výstup filtru na binární obraz.offsetposouvá binarizaci (záporné zvyšuje počet bílých pixelů, kladné jej snižuje).invertinvertuje binární výstup.maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Spustí percentilový filtr na obraze (ve výchozím nastavení medián).
sizeje velikost jádra. Použijte 1 (jádro 3x3), 2 (jádro 5x5) atd.percentileje percentil, který se vybere z každého jádra (0 = min, 0.5 = medián, 1.0 = max). Výchozí hodnota je 0.5.thresholdpokud je True, adaptivně prahuje výstup filtru na binární obraz.offsetposouvá binarizaci (záporné zvyšuje počet bílých pixelů, kladné jej snižuje).invertinvertuje binární výstup.maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
- mode(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Nahradí každý pixel modem jeho sousedů. U hran obrazu RGB může produkovat artefakty kvůli nelineární operaci.
sizeje velikost jádra. Použijte 1 (jádro 3x3), 2 (jádro 5x5) atd.thresholdpokud je True, adaptivně prahuje výstup filtru na binární obraz.offsetposouvá binarizaci (záporné zvyšuje počet bílých pixelů, kladné jej snižuje).invertinvertuje binární výstup.maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Spustí filtr středního bodu na obraze. Tento filtr nalezne středový bod ((max-min)/2) okolí každého pixelu v obraze.
sizeje velikost jádra. Použijte 1 (jádro 3x3), 2 (jádro 5x5) atd.biasřídí míchání min/max. 0 pouze pro min filtrování, 1.0 pouze pro max filtrování. Pomocíbiasmůžete obraz filtrovat min/max.thresholdpokud je True, adaptivně prahuje výstup filtru na binární obraz.offsetposouvá binarizaci (záporné zvyšuje počet bílých pixelů, kladné jej snižuje).invertinvertuje binární výstup.maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Konvoluje obraz s libovolným filtračním jádrem.
sizeřídí velikost jádra, které musí mít((size*2)+1)x((size*2)+1)prvků.kernelje jádro, se kterým se konvoluje, jako plochý 1D seznam/n-tice o((size*2)+1)*((size*2)+1)prvcích, nebo jako 2D seznam/n-tice s((size*2)+1)řádky o((size*2)+1)prvcích.mulje multiplikativní škála kontrastu (výchozí 1.0).addje aditivní ofset jasu (výchozí 0.0).thresholdpokud je True, adaptivně prahuje výstup filtru na binární obraz.offsetposouvá binarizaci (záporné zvyšuje počet bílých pixelů, kladné jej snižuje).invertinvertuje binární výstup.maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Konvoluje obraz s vyhlazovacím gaussovským jádrem.
sizeje velikost jádra. Použijte 1 (jádro 3x3), 2 (jádro 5x5) atd.unsharppokud je True, provede operaci unsharp mask (zaostří hrany) namísto prosté gaussovské konvoluce.mulje multiplikativní škála kontrastu (výchozí 1.0).addje aditivní ofset jasu (výchozí 0.0).thresholdpokud je True, adaptivně prahuje výstup filtru na binární obraz.offsetposouvá binarizaci (záporné zvyšuje počet bílých pixelů, kladné jej snižuje).invertinvertuje binární výstup.maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Konvoluje obraz s laplaciánským jádrem detekujícím hrany.
sizeje velikost jádra. Použijte 1 (jádro 3x3), 2 (jádro 5x5) atd.sharpenpokud je True, zaostří obraz namísto výstupu surové neprahované hranové odezvy.mulje multiplikativní škála kontrastu (výchozí 1.0).addje aditivní ofset jasu (výchozí 0.0).thresholdpokud je True, adaptivně prahuje výstup filtru na binární obraz.offsetposouvá binarizaci (záporné zvyšuje počet bílých pixelů, kladné jej snižuje).invertinvertuje binární výstup.maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Konvoluje obraz s bilaterálním filtrem (vyhlazování zachovávající hrany).
sizeje velikost jádra. Použijte 1 (jádro 3x3), 2 (jádro 5x5) atd.color_sigmařídí toleranci shody barev; větší hodnoty produkují více barevného rozostření.space_sigmařídí prostorové rozostření; větší hodnoty produkují více pixelového rozostření.thresholdpokud je True, adaptivně prahuje výstup filtru na binární obraz.offsetposouvá binarizaci (záporné zvyšuje počet bílých pixelů, kladné jej snižuje).invertinvertuje binární výstup.maskje binární obraz použitý jako maska na úrovni pixelů; upraví se pouze pixely nastavené v masce.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer/yuv.
Geometrické metody¶
- linpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image¶
Přemapuje obraz z kartézských souřadnic do lineárních polárních souřadnic.
Nastavte
reverse=Truepro přemapování v opačném směru.xayurčují středovou souřadnici transformace v pixelech obrazu. Pokud jexNone(výchozí), nastaví se na polovinu šířky obrazu; podobněymá výchozí hodnotu poloviny výšky obrazu.Lineární polární přemapování mění rotaci obrazu na posun po ose x.
Není podporováno u komprimovaných obrazů ani obrazů bayer.
Tato metoda není dostupná na OpenMV Cam M4.
- logpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image¶
Přemapuje obraz z kartézských souřadnic do logaritmických polárních souřadnic.
Nastavte
reverse=Truepro přemapování v opačném směru.xayurčují středovou souřadnici transformace v pixelech obrazu. Pokud jexNone(výchozí), nastaví se na polovinu šířky obrazu; podobněymá výchozí hodnotu poloviny výšky obrazu.Logaritmické polární přemapování mění rotaci obrazu na posun po ose x a škálování/přibližování na posun po ose y.
Není podporováno u komprimovaných obrazů ani obrazů bayer.
Tato metoda není dostupná na OpenMV Cam M4.
- lens_corr(strength: float = 1.8, zoom: float = 1.0, x_corr: float = 0.0, y_corr: float = 0.0) Image¶
Provede korekci čočky pro odstranění rybího oka z obrazu způsobeného zkreslením čočky.
strengthje float definující, jak moc odstranit rybí oko z obrazu. Vyzkoušejte výchozí 1.8 a poté ji zvyšujte nebo snižujte, dokud obraz nevypadá dobře.zoomje míra přiblížení obrazu. Výchozí 1.0.x_corrofset pixelu od středu s plovoucí desetinnou čárkou. Může být záporný nebo kladný.y_corrofset pixelu od středu s plovoucí desetinnou čárkou. Může být záporný nebo kladný.Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů 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¶
Opraví perspektivní problémy v obraze provedením 3D rotace snímkového bufferu.
x_rotationje počet stupňů otočení obrazu ve snímkovém bufferu kolem osy x (tj. to otáčí obraz nahoru a dolů).y_rotationje počet stupňů otočení obrazu ve snímkovém bufferu kolem osy y (tj. to otáčí obraz vlevo a vpravo).z_rotationje počet stupňů otočení obrazu ve snímkovém bufferu kolem osy z (tj. to otáčí obraz na místě).x_translationje počet jednotek pro posun obrazu vlevo nebo vpravo po rotaci. Protože se tento posun aplikuje v 3D prostoru, jednotkami nejsou pixely…y_translationje počet jednotek pro posun obrazu nahoru nebo dolů po rotaci. Protože se tento posun aplikuje v 3D prostoru, jednotkami nejsou pixely…zoomje míra přiblížení obrazu. Výchozí 1.0.fovje zorné pole použité pro interní projekci 2D->3D. Jak sefovblíží 0, obraz se umisťuje do nekonečna; jak se blíží 180, obraz se umisťuje do zorného pole.cornersje seznam čtyř n-tic (x, y) použitých k sestavení 4bodové homografie mapující rohy na (0, 0), (image_width-1, 0), (image_width-1, image_height-1) a (0, image_height-1) před aplikací 3D rotace. Užitečné pro transformace pohledu shora (z ptačí perspektivy).Vrací objekt obrazu, takže můžete zavolat další metodu pomocí notace
..Není podporováno u komprimovaných obrazů ani obrazů bayer.
Tato metoda není dostupná na OpenMV Cam M4.
Get metody¶
- 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¶
Vypočítá podobnost mezi dvěma obrazy pomocí indexu strukturální podobnosti (SSIM). SSIM se pohybuje od -1 (opačné) do 1 (identické). Vrací objekt
image.similarity.imageje obraz, se kterým se porovnává (objekt obrazu nebo řetězec cesty, např."test.jpg").x,y,x_scale,y_scale,roi,rgb_channel,alpha,color_palette,alpha_palette,hintatransformpřijímají stejné hodnoty jakoImage.draw_image().dssimpokud je True, vrací místo toho index strukturální nepodobnosti (DSSIM), kde 0 znamená identické a 1 znamená zcela odlišné.
- 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¶
Vypočítá normalizovaný histogram na všech barevných kanálech pro
roia vrátí objektimage.histogram. K dispozici také jakoImage.get_hist()neboImage.histogram().thresholdsje seznam n-tic(lo, hi)u obrazů ve stupních šedi nebo n-tic(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)u obrazů RGB565. Pokud je předán, histogram se vypočítá pouze přes pixely v rámci prahů.invertinvertuje shodu s prahem.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.bins(grayscale) nebol_bins/a_bins/b_bins(RGB565) nastavují počet přihrádek histogramu na kanál. Musí být větší než 2. Výchozí hodnotou je maximální počet přihrádek na kanál.differencelze nastavit na objekt obrazu pro práci s rozdílem mezi aktuálním obrazem a tímto obrazem bez dodatečného bufferu.Není podporováno u komprimovaných obrazů ani obrazů 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¶
Vypočítá střední hodnotu, medián, modus, směrodatnou odchylku, min, max, dolní kvartil a horní kvartil pro všechny barevné kanály pro
roia vrátí objektimage.statistics. K dispozici také jakoImage.get_stats()neboImage.statistics().thresholdsje seznam n-tic(lo, hi)u obrazů ve stupních šedi nebo n-tic(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)u obrazů RGB565. Pokud je předán, statistiky se vypočítají pouze přes pixely v rámci prahů.invertinvertuje shodu s prahem.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.bins(grayscale) nebol_bins/a_bins/b_bins(RGB565) nastavují počet přihrádek histogramu na kanál. Musí být větší než 2. Výchozí hodnotou je maximální počet přihrádek na kanál.differencelze nastavit na objekt obrazu pro práci s rozdílem mezi aktuálním obrazem a tímto obrazem bez dodatečného bufferu.Není podporováno u komprimovaných obrazů ani obrazů 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¶
Vypočítá lineární regresi (Theil-Sen) na všech prahovaných pixelech v obraze. Vrací objekt
image.line, nebo None, pokud nebyla nalezena žádná čára.thresholdsje seznam n-tic(lo, hi)u obrazů ve stupních šedi nebo n-tic(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)u obrazů RGB565.invertinvertuje shodu s prahem.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.x_strideay_strideřídí, kolik pixelů se přeskočí při vyhodnocování obrazu.area_thresholdminimální plocha ohraničujícího rámečku; menší výsledky vracejí None.pixels_thresholdminimální počet prahovaných pixelů; menší výsledky vracejí None.target_sizeje n-tice(w, h). ROI se plošně zmenší tak, aby se vešlo do této velikosti před spuštěním algoritmu O(N^2). Výchozí hodnota je(80, 60).Není podporováno u komprimovaných obrazů ani obrazů bayer.
Detekční metody¶
- 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]¶
Najde všechny bloby (souvislé oblasti pixelů, které projdou testem prahu) v obraze a vrátí seznam objektů
image.blob.thresholdsje seznam n-tic(lo, hi)u obrazů ve stupních šedi nebo n-tic(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)u obrazů RGB565 (kanály LAB). Lze předat až 32 n-tic. Prohozené hodnoty min/max jsou automaticky opraveny; chybějící složky mají výchozí maximální rozsah.invertinvertuje shodu s prahem.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.x_strideay_strideřídí, kolik pixelů se přeskočí při hledání blobu. Zvyšte, pokud je známo, že bloby jsou velké.area_thresholdminimální plocha ohraničujícího rámečku; menší bloby jsou odfiltrovány.pixels_thresholdminimální počet prahovaných pixelů; menší bloby jsou odfiltrovány.mergepokud je True, sloučí bloby, jejichž ohraničující obdélníky se protínají.marginzvětšuje/zmenšuje ohraničující obdélníky použité pro průnik. Sloučené bloby provedou OR svých bitových vektorůcode(jeden bit na práh).threshold_cbse volá pro každý blob po prahování; vraťte True pro ponechání, False pro odfiltrování.merge_cbse volá pro každou dvojici blobů, které se mají sloučit; vraťte True pro povolení sloučení, False pro jeho zabránění.x_hist_bins_maxpokud je nenulové, naplní každý blob projekcí x_histogram s tímto počtem přihrádek.y_hist_bins_maxpokud je nenulové, naplní každý blob projekcí y_histogram s tímto počtem přihrádek.Není podporováno u komprimovaných obrazů ani obrazů 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]¶
Najde všechny nekonečné čáry v obraze pomocí Houghovy transformace. Vrací seznam objektů
image.line.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.x_strideay_strideřídí, kolik pixelů se přeskočí během Houghovy transformace.thresholdminimální velikost čáry (součet sobelovských velikostí podél čáry); čáry pod touto hodnotou jsou odfiltrovány.theta_marginarho_marginřídí slučování: čáry v rámci těchto prahů jsou sloučeny.Není podporováno u komprimovaných obrazů ani obrazů bayer.
Tato metoda není dostupná na 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]¶
Najde úsečky v obraze. Vrací seznam objektů
image.line.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.merge_distanceje maximální vzdálenost v pixelech mezi dvěma úsečkami, aby byly sloučeny.max_theta_differenceje maximální rozdíl theta ve stupních mezi úsečkami, aby byly sloučeny.Tato metoda není dostupná na 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]¶
Najde kruhy v obraze pomocí Houghovy transformace. Vrací seznam objektů
image.circle.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.x_strideay_strideřídí, kolik pixelů se přeskočí během Houghovy transformace.thresholdminimální velikost kruhu (součet sobelovských velikostí podél kruhu); kruhy pod touto hodnotou jsou odfiltrovány.x_margin,y_marginar_marginřídí slučování: kruhy v rámci těchto prahů jsou sloučeny.r_minminimální poloměr kruhu. Výchozí hodnota je 2.r_maxmaximální poloměr kruhu. Výchozí hodnota jemin(roi.w/2, roi.h/2).r_stepvelikost kroku poloměru. Výchozí hodnota je 2.Tato metoda není dostupná na OpenMV Cam M4.
- find_rects(roi: Tuple[int, int, int, int] | None = None, threshold: int = 1000) List[rect]¶
Najde obdélníky v obraze pomocí algoritmu detekce čtyřúhelníků apriltag. Vrací seznam objektů
image.rect.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.thresholdminimální velikost hrany (součet sobelovských velikostí podél hran obdélníku); obdélníky pod touto hodnotou jsou odfiltrovány.Tato metoda není dostupná na OpenMV Cam M4.
- find_qrcodes(roi: Tuple[int, int, int, int] | None = None) List[qrcode]¶
Najde všechny qrkódy v rámci
roia vrátí seznam objektůimage.qrcode.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.Tato metoda není dostupná na 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]¶
Najde všechny apriltagy v rámci
roia vrátí seznam objektůimage.apriltag.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.familiesje bitová maska rodin tagů k dekódování. Je to logický OR z:Výchozí hodnota je
image.TAG36H11. Doba detekce roste s počtem povolených rodin.fxafyjsou ohniskové vzdálenosti kamery X a Y v pixelech.cxacyjsou střed obrazu, typickyimage.width()/2aimage.height()/2.Není podporováno u komprimovaných obrazů.
Tato metoda není dostupná na OpenMV Cam M4.
- find_datamatrices(roi: Tuple[int, int, int, int] | None = None, effort: int = 200) List[datamatrix]¶
Najde všechny datamatice v rámci
roia vrátí seznam objektůimage.datamatrix.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.effortřídí, kolik času strávit pokusy o nalezení shod data matrix. Vyšší hodnoty zlepšují detekci za cenu snímkové frekvence. Hodnoty pod ~160 selhávají při detekci; hodnoty nad ~240 přinášejí klesající výnosy. Výchozí hodnota je 200.Tato metoda není dostupná na OpenMV Cam M4.
- find_barcodes(roi: Tuple[int, int, int, int] | None = None) List[barcode]¶
Najde všechny 1D čárové kódy v rámci
roia vrátí seznam objektůimage.barcode. Skenuje horizontálně i vertikálně.Podporované typy čárových kódů:
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.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.Tato metoda není dostupná na 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¶
Najde posun translace tohoto obrazu od
templatepomocí fázové korelace. Vrací objektimage.displacement.roije obdélník oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.template_roije oblast zájmu šablony. Výchozí hodnotou je obdélník obrazu šablony.roiatemplate_roimusí mít stejnou šířku a výšku.logpolarpokud je True, vrací změnu rotace/měřítka namísto posunu x/y.fix_rotation_scalepokud je True, vypočítá posun po zarovnání rotace a měřítka (smysluplné pouze když jelogpolar=False).Poznámka
Tuto metodu používejte na velikostech obrazu, které jsou mocninou 2 (např.
sensor.B64X64).Není podporováno u komprimovaných obrazů ani obrazů bayer. Není dostupné na 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¶
Pokusí se najít první místo v obraze, kde se
templateshoduje pomocí normalizované křížové korelace. Vrací n-tici ohraničujícího rámečku (x, y, w, h), nebo None.templateje obraz ve stupních šedi, se kterým se má tento obraz porovnat.thresholdje hodnota (0.0-1.0). Vyšší hodnoty snižují falešně pozitivní detekce a detekce; nižší hodnoty mají opačný efekt.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.stepje počet pixelů k přeskočení během vyhledávání (používá se pouze v režimuimage.SEARCH_EX).searchjeimage.SEARCH_DS(rychlejší diamantové vyhledávání) neboimage.SEARCH_EX(vyčerpávající vyhledávání).Funguje pouze na obrazech ve stupních šedi.
- 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]]¶
Prohledá obraz na oblasti odpovídající předané Haarově kaskádě a vrátí seznam n-tic ohraničujících rámečků (x, y, w, h). Vrací prázdný seznam, pokud nejsou nalezeny žádné příznaky.
cascadeje objekt Haarovy kaskády (vizimage.HaarCascade()).threshold(0.0-1.0). Nižší hodnoty zvyšují míru detekce a míru falešně pozitivních výsledků.scalemusí být větší než 1.0. Vyšší hodnoty běží rychleji, ale produkují horší shody.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.
- find_eye(roi: Tuple[int, int, int, int]) Tuple[int, int]¶
Hledá zornici v n-tici oblasti zájmu (x, y, w, h) kolem oka. Vrací pozici (x, y) zornice, nebo (0, 0), pokud není nalezena žádná.
roije n-tice obdélníku oblasti zájmu (x, y, w, h).Funguje pouze na obrazech ve stupních šedi.
- find_lbp(roi: Tuple[int, int, int, int]) lbp_descriptor¶
Extrahuje klíčové body LBP (local-binary-patterns) z oblasti zájmu. Pro porovnání dvou deskriptorů použijte
image.match_descriptor().roije n-tice obdélníku oblasti zájmu (x, y, w, h).Funguje pouze na obrazech ve stupních šedi.
- 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¶
Extrahuje klíčové body ORB z oblasti zájmu. Pro porovnání dvou deskriptorů použijte
image.match_descriptor(). Vrací None, pokud nebyly nalezeny žádné klíčové body.roije n-tice obdélníku oblasti zájmu (x, y, w, h). Výchozí hodnotou je obdélník obrazu.threshold(0-255) řídí počet extrahovaných rohů. Nižší prahy produkují více rohů. Použijte ~20 pro AGAST, ~60-80 pro FAST.normalizedpokud je True, zakáže extrakci klíčových bodů s více rozlišeními.scale_factormusí být větší než 1.0. Vyšší hodnoty běží rychleji, ale produkují horší shody.max_keypointsje maximální počet klíčových bodů, které se mají ponechat.corner_detectorjeimage.CORNER_FASTneboimage.CORNER_AGAST.Funguje pouze na obrazech ve stupních šedi.
- find_edges(edge_type: int, threshold: Tuple[int, int] = (100, 200)) Image¶
Převede obraz na černobílý, přičemž jako bílé pixely ponechá pouze hrany.
image.EDGE_SIMPLE - Jednoduchý prahovaný algoritmus horní propusti.
image.EDGE_CANNY - Cannyho algoritmus detekce hran.
thresholdje dvouhodnotová n-tice obsahující nízký práh a vysoký práh. Kvalitu hran můžete řídit úpravou těchto hodnot. Výchozí hodnota je (100, 200).Funguje pouze na obrazech ve stupních šedi.
- find_hog(roi: Tuple[int, int, int, int] | None = None, size: int = 8) Image¶
Nahradí pixely v ROI čarami HOG (histogram of oriented gradients).
roije n-tice obdélníku oblasti zájmu (x, y, w, h). Pokud není zadána, rovná se obdélníku obrazu. Operace se provádí pouze na pixelech v rámciroi.Funguje pouze na obrazech ve stupních šedi.
Tato metoda není dostupná na OpenMV Cam M4.
- stereo_disparity(reversed: bool = False, max_disparity: int = 64, threshold: int = 64) Image¶
Vezme dvojnásobně širokou obraz ve stupních šedi obsahující výstup dvou vedle sebe umístěných senzorů kamer a nahradí jednu polovinu obrazem stereo disparity (každý pixel reprezentuje hloubku). Např. pro dvě kamery 320x240 předejte obraz 640x240.
reversedVe výchozím nastavení se levý obraz porovnává s pravým a pravý obraz se nahrazuje. Nastavte True pro porovnání zprava->doleva a nahrazení levého obrazu.max_disparityje maximální vzdálenost (1-255) pro hledání odpovídajícího bloku pixelů pomocí součtu absolutních rozdílů. Větší hodnoty trvají exponenciálně déle, ale produkují výstup vyšší kvality.thresholdpokud je součet absolutních rozdílů mezi dvěma bloky menší nebo roven tomuto prahu, jsou považovány za shodné.
- 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]]¶
Spustí selektivní vyhledávání na obraze a vrátí seznam n-tic ohraničujících rámečků (x, y, w, h) návrhů objektů.
thresholdje prah segmentace; vyšší hodnoty produkují méně/větší oblasti.sizeje minimální velikost oblasti po sloučení.a1,a2,a3jsou váhy podobnosti barvy/textury/velikosti použité při slučování oblastí.