клас Image – об’єкт зображення¶
Image є центральним типом даних модуля image – буфер пікселів у пам’яті, над яким працюють усі підпрограми малювання, фільтри, геометричні перетворення та підпрограми виявлення ознак. Кожен кадр, що повертається з csi.CSI.snapshot(), є Image; так само і кожен кадр, завантажений з диска, декодований з JPEG або PNG, виділений з масиву в стилі numpy ndarray, або створений як порожній полотно для малювання.
Об’єкт Image описується трьома числами – width, height та pixformat – плюс суміжний буфер пікселів. Формат пікселів визначає як розташування в пам’яті, так і доступні операції:
BINARY (1 bpp) – 1 біт на піксель; використовується для морфології та порогової обробки.
GRAYSCALE (8 bpp) – 1 байт на піксель; канонічний формат для більшості методів комп’ютерного зору (AprilTag, межі, ORB, оптичний потік).
RGB565 (16 bpp) – 2 байти на піксель (5R/6G/5B); формат кольору за замовчуванням.
BAYER (8 bpp) – необроблені дані мозаїки Байєра, отримані безпосередньо з датчика. Більшість методів комп’ютерного зору недоступні для зображень Байєра; спочатку перетворіть у GRAYSCALE / RGB565.
YUV422 (16 bpp) – колір з субдискретизацією хроматики 4:2:2, два байти на піксель. Лише деякі методи працюють безпосередньо з YUV422.
JPEG / PNG – стиснені буфери. Для операцій на рівні пікселів спочатку потрібно викликати
to_grayscale()абоto_rgb565().
Звідки беруться об’єкти Image¶
Є чотири способи отримати Image:
З кадрового буфера камери –
csi.CSI().snapshot()повертає наступний захоплений кадр. Повернутий об’єкт є тонкою оболонкою навколо пам’яті кадрового буфера камери, тому будь-яка операція малювання/фільтрації змінює те, що надсилається до попереднього перегляду IDE та дисплея.З файлу – передайте рядок шляху конструктору
Image. BMP, PGM, PPM, JPEG та PNG декодуються безпосередньо в RAM (або в кадровий буфер камери, якщоcopy_to_fb=True).З ndarray – передайте масив float32 з формою
(h, w)або(h, w, 3). Пікселі масштабуються з0.0 -- 255.0до GRAYSCALE або RGB565 відповідно.Порожнє – передайте
(width, height, pixformat)для виділення полотна малювання, заповненого нулями. Для стиснених форматів пікселів (JPEG/PNG) потрібен аргументbuffer=, що містить стиснений байтовий потік.
Типовий цикл захоплення-обробки-відображення¶
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.
Індексування, довжина, ітерація та доступ як до байтів¶
Індексування –
img[i]зчитує піксельi(лінійно, рядок за рядком).img[i] = valueзаписує його. Пікселі Grayscale/Bayer є 8-бітними цілими числами, пікселі RGB565/YUV422 – 16-бітними упакованими цілими числами, бінарні пікселі – 0 або 1. Для зображень JPEG/PNG індексний простір є стисненим байтовим потоком, а не пікселями.Довжина –
len(img)повертає кількість пікселів для нестиснених форматів або кількість байтів для стиснених форматів.Ітерація –
for px in img: ...обходить масив пікселів у тому ж порядку, що й індексування[].Байтоподібний –
Imageнадає протокол буфера читання, тому можна передавати його безпосередньо до будь-чого, що приймаєbytes/bytearray(наприклад,uart.write(img),socket.send(img),hashlib.sha256(img)). Використовуйтеbytearray(), щоб отримати доступ для читання/запису.
Прапорці підказок¶
Багато методів Image приймають аргумент hint, що є логічним АБО наступних прапорців:
image.AREA: Використовувати масштабування за площею при зменшенні масштабу замість стандартного метода найближчого сусіда.
image.BILINEAR: Використовувати білінійне масштабування замість стандартного метода найближчого сусіда.
image.BICUBIC: Використовувати бікубічне масштабування замість стандартного метода найближчого сусіда.
image.CENTER: Центрувати зображення, що відображається на дисплеї. Застосовується після масштабування.
image.HMIRROR: Горизонтально відзеркалити зображення.
image.VFLIP: Вертикально перевернути зображення.
image.TRANSPOSE: Транспонувати зображення (поміняти x/y місцями).
image.EXTRACT_RGB_CHANNEL_FIRST: Виконати вилучення каналу rgb перед масштабуванням.
image.APPLY_COLOR_PALETTE_FIRST: Застосувати палітру кольорів перед масштабуванням.
image.SCALE_ASPECT_KEEP: Масштабувати зображення, що відображається, щоб воно вписувалося в дисплей.
image.SCALE_ASPECT_EXPAND: Масштабувати зображення, що відображається, щоб заповнити дисплей (призводить до обрізання).
image.SCALE_ASPECT_IGNORE: Масштабувати зображення, що відображається, щоб заповнити дисплей (призводить до розтягування).
image.ROTATE_90: Повернути зображення на 90 градусів (це еквівалентно VFLIP | TRANSPOSE).
image.ROTATE_180: Повернути зображення на 180 градусів (це еквівалентно HMIRROR | VFLIP).
image.ROTATE_270: Повернути зображення на 270 градусів (це еквівалентно HMIRROR | TRANSPOSE).
image.BLACK_BACKGROUND: Вважати, що фонове зображення, на якому малюється, чорне, що прискорює змішування. Підтримується лишеImage.draw_image()таImage.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)¶
Якщо
argє рядком, то це створює новий об’єкт зображення з файлу за шляхомarg. Підтримує завантаження файлів зображень bmp/pgm/ppm/jpg/jpeg/png з диска. Якщоcopy_to_fbмає значення true, зображення копіюється до кадрового буфера, а не розміщується в купі.Якщо
argєndarray, то це створює новий об’єкт зображення зndarray. Об’єктиndarrayз формою(w, h)розглядаються як зображення у відтінках сірого,(w, h, 3)– як зображення RGB565. На даний момент підтримуються лишеndarraysтипу float32. При створенні зображення таким чином, якщо передати аргументbuffer, він буде використовуватись для зберігання даних зображення замість виділення місця в купі. Якщоcopy_to_fbмає значення true, зображення копіюється до кадрового буфера, а не розміщується в купі або використовуєтьсяbuffer.Якщо
argєint, то він вважається шириною нового зображення, і після нього повинні йти значенняheightтаformatдля створення нового порожнього об’єкта зображення.formatможе бути будь-яким значенням pixformat зображення, наприкладimage.GRAYSCALE. Зображення буде ініціалізовано нулями. Зверніть увагу, що для стиснених форматів зображень очікується значенняbuffer.bufferвважається джерелом даних зображення при такому способі створення зображень. При використанні зcopy_to_fbдані зbufferкопіюються до кадрового буфера. Якщо ви хочете створити зображення JPEG з об’єкта JPEGbytes()абоbytearray(), ви можете передатиwidth,height,image.JPEGдля JPEG разом зі встановленнямbufferна байтовий потік JPEG для створення зображення JPEG.Зображення підтримують нотацію «[]». Виконайте
image[index] = 8/16-bit value, щоб присвоїти піксель зображення, абоimage[index], щоб отримати піксель зображення, який буде або 8-бітним значенням для зображень grayscale/bayer, або 16-бітним значенням для зображень RGB565/YUV. Бінарні зображення повертають 1-бітне значення.Для зображень JPEG «[]» дозволяє отримати доступ до стисненого блобу зображення JPEG як до масиву байтів. Читання та запис у масив даних є непрозорим, оскільки зображення JPEG є стисненими байтовими потоками.
Зображення також підтримують операції з буфером читання. Ви можете передавати зображення до всіляких функцій MicroPython так, ніби зображення є об’єктом-масивом байтів. Зокрема, якщо ви хочете передати зображення, ви можете просто передати його до функцій запису UART/SPI/I2C для автоматичної передачі.
Основні методи¶
- format() int¶
Повертає
image.GRAYSCALEдля зображень у відтінках сірого,image.RGB565для зображень RGB565,image.BAYERдля зображень із шаблоном Байєра, таimage.JPEGдля зображень JPEG.
- bytearray() bytearray¶
Повертає об’єкт
bytearray, що вказує на дані зображення для доступу читання/запису на рівні байтів.Примітка
Об’єкти зображень автоматично перетворюються як об’єкти
bytesпри передачі до драйвера MicroPython, що вимагає об’єкт типуbytes. Це доступ лише для читання. Викличтеbytearray(), щоб отримати доступ для читання/запису.
- get_pixel(x: int, y: int, rgbtuple: bool | None = None) int | Tuple[int, int, int]¶
Для зображень у відтінках сірого: повертає значення пікселя у відтінках сірого в місці (x, y). Для зображень RGB565: повертає кортеж RGB888 пікселя (r, g, b) в місці (x, y). Для зображень із шаблоном Байєра: повертає значення пікселя в місці (x, y).
Повертає None, якщо
xабоyзнаходяться за межами зображення.xтаyможуть передаватися окремо або як кортеж.rgbtupleякщо True, змушує цей метод повертати кортеж RGB888. В іншому випадку цей метод повертає ціле значення базового пікселя. Тобто для зображень RGB565 цей метод повертає значення RGB565. За замовчуванням True для зображень RGB565 і False в інших випадках.Не підтримується на стиснених зображеннях.
Примітка
Image.get_pixel()таImage.set_pixel()є єдиними методами, що дозволяють маніпулювати зображеннями із шаблоном Байєра. Зображення із шаблоном Байєра – це буквальні зображення, де пікселі є R/G/R/G/тощо для парних рядків і G/B/G/B/тощо для непарних рядків. Кожен піксель 8-бітний. Якщо ви викликаєте цей метод зі встановленимrgbtuple,Image.get_pixel()виконає деmозаїкування вихідного зображення в цьому місці пікселя та поверне дійсний кортеж RGB888 для місця пікселя.
- set_pixel(x: int, y: int, pixel: int | Tuple[int, int, int]) Image¶
Для зображень у відтінках сірого: встановлює піксель в місці (x, y) до значення у відтінках сірого
pixel. Для зображень RGB565: встановлює піксель в місці (x, y) до кортежу RGB888 (r, g, b)pixel. Для зображень із шаблоном Байєра: встановлює значення пікселя в місці (x, y) до значенняpixel.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..xтаyможуть передаватися окремо або як кортеж.pixelможе бути або кортежем RGB888 (r, g, b), або базовим значенням пікселя (тобто значенням RGB565 для зображень RGB565 або 8-бітним значенням для зображень у відтінках сірого).Не підтримується на стиснених зображеннях.
Примітка
Image.get_pixel()таImage.set_pixel()є єдиними методами, що дозволяють маніпулювати зображеннями із шаблоном Байєра. Зображення із шаблоном Байєра – це буквальні зображення, де пікселі є R/G/R/G/тощо для парних рядків і G/B/G/B/тощо для непарних рядків. Кожен піксель 8-бітний. Якщо ви викликаєте цей метод з кортежем RGB888, значення у відтінках сірого цього кортежу RGB888 вилучається та встановлюється для місця пікселя.
Методи перетворення¶
- to_ndarray(dtype: str, buffer: bytes | bytearray | memoryview | None = None) ndarray¶
Повертає об’єкт
ndarray, створений із зображення. Наразі це працює лише для зображень GRAYSCALE або RGB565.dtypeможе бутиb,Bабоfдля створення знакового 8-бітного, беззнакового 8-бітного або 32-бітного числа з плаваючою комоюndarray. Зображення GRAYSCALE безпосередньо перетворюються на беззнакові 8-бітні об’єктиndarray. Для знакових 8-бітних об’єктівndarrayзначення (0:255) відображаються на (-127:128). Для 32-бітних об’єктівndarrayз плаваючою комою значення відображаються на (0.0:255.0). Зображення RGB565 перетворюються на 3-канальні об’єктиndarray, і той самий процес, описаний вище для зображень GRAYSCALE, застосовується до кожного каналу залежно відdtype. Зверніть увагу, щоdtypeтакож приймає цілочисельні значення (наприклад,ord())b,Bтаfвідповідно.bufferякщо неNone, є об’єктомbytearray, який використовується як буфер дляndarray. ЯкщоNone, новий буфер виділяється в купі для зберігання даних зображенняndarray. Ви можете використовувати аргументbuffer, щоб безпосередньо виділитиndarrayу попередньо виділеному буфері, заощаджуючи виділення купи та операцію копіювання.Повернутий
ndarrayмає форму(height, width)для зображень GRAYSCALE та(height, width, 3)для зображень 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¶
Перетворює зображення на бітове зображення (1 біт на піксель).
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Примітка
Бітові зображення схожі на зображення у відтінках сірого лише з двома значеннями пікселів – 0 та 1. Крім того, бітові зображення упаковані таким чином, що зберігають лише 1 біт на піксель, роблячи їх дуже маленькими. Бібліотека зображень OpenMV дозволяє використовувати бітові зображення в усіх місцях, де можуть використовуватися зображення
sensor.GRAYSCALEтаsensor.RGB565. Однак, багато операцій, що застосовуються до бітових зображень, не мають сенсу, оскільки бітові зображення мають лише 2 значення. OpenMV рекомендує використовувати бітові зображення для значеньmaskв операціях, оскільки вони досить легко вміщуються в купі MicroPython. Нарешті, значення пікселів бітових зображень 0 та 1 інтерпретуються як чорний та білий при застосуванні до зображеньsensor.GRAYSCALEабоsensor.RGB565. Бібліотека автоматично обробляє перетворення.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення у відтінках сірого (8 біт на піксель).
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення RGB565 (16 біт на піксель).
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення RGB565 у веселковій палітрі (16 біт на піксель).
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення RGB565 у палітрі залізної дуги (16 біт на піксель).
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення глибини RGB565 (16 біт на піксель).
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бутиimage.PALETTE_DEPTHабо зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення темних подій RGB565 (16 біт на піксель).
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення світлих подій RGB565 (16 біт на піксель).
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення JPEG.
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.qualityвизначає якість стиснення зображення jpeg. Значення може бути від 0 до 100.subsamplingможе бути:image.JPEG_SUBSAMPLING_AUTO: Використовувати найкращу субдискретизацію для зображення на основі якості.image.JPEG_SUBSAMPLING_444: Використовувати субдискретизацію 4:4:4.image.JPEG_SUBSAMPLING_422: Використовувати субдискретизацію 4:2:2.image.JPEG_SUBSAMPLING_420: Використовувати субдискретизацію 4:2:0.
Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення PNG.
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Перетворює зображення на зображення JPEG.
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.qualityвизначає якість стиснення зображення jpeg. Значення може бути від 0 до 100.subsamplingможе бути:image.JPEG_SUBSAMPLING_AUTO: Використовувати найкращу субдискретизацію для зображення на основі якості.image.JPEG_SUBSAMPLING_444: Використовувати субдискретизацію 4:4:4.image.JPEG_SUBSAMPLING_422: Використовувати субдискретизацію 4:2:2.image.JPEG_SUBSAMPLING_420: Використовувати субдискретизацію 4:2:0.
Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Примітка
Image.compressє псевдонімом дляImage.to_jpeg.
- copy(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy_to_fb: bool = False) Image¶
Створює глибоку копію об’єкта зображення.
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Змінює зображення на місці, не змінюючи основний тип зображення.
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Змінює зображення на місці, не змінюючи основний тип зображення.
x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (за виняткомimage.BLACK_BACKGROUND, який тут не підтримується).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.copyякщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.copy_to_fbякщо True, зображення завантажується безпосередньо в кадровий буфер.copy_to_fbмає пріоритет надcopy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Примітка
Image.scaleє псевдонімом дляImage.crop.
- save(path: str, roi: Tuple[int, int, int, int] | None = None, quality: int = 50) Image¶
Зберігає копію зображення у файловій системі за шляхом
path.Підтримує файли зображень bmp/pgm/ppm/jpg/jpeg. Зверніть увагу, що не можна зберігати зображення зі стисненням jpeg у нестиснений формат.
roi– це прямокутник області інтересу (x, y, w, h) для збереження. Якщо не вказано, він дорівнює прямокутнику зображення, що копіює все зображення. Цей аргумент не застосовується для зображень JPEG.quality– це якість стиснення jpeg, що використовується для збереження зображення у форматі jpeg, якщо зображення ще не стиснено (0-100) (int).Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
Методи малювання¶
- clear(mask: Image | None = None) Image¶
Встановлює всі пікселі зображення в нуль (дуже швидко).
mask– це інше зображення, що використовується як маска на рівні пікселів для операції. Маска повинна бути зображенням лише з чорними або білими пікселями та повинна мати той самий розмір, що й зображення, над яким виконується операція. Змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях.
- draw_line(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image¶
Малює лінію від (x0, y0) до (x1, y1) на зображенні. Ви можете передавати x0, y0, x1, y1 окремо або як кортеж (x0, y0, x1, y1).
color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.thicknessвизначає товщину лінії в пікселях.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Малює прямокутник на зображенні. Ви можете передавати x, y, w, h окремо або як кортеж (x, y, w, h).
color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.thicknessвизначає товщину ліній у пікселях.Передайте
fillзі значенням True для заповнення прямокутника.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- draw_circle(x: int, y: int, radius: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image¶
Малює коло на зображенні. Ви можете передавати x, y, radius окремо або як кортеж (x, y, radius).
color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.thicknessвизначає товщину меж у пікселях.Передайте
fillзі значенням True для заповнення кола.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Малює еліпс на зображенні. Ви можете передавати cx, cy, rx, ry та обертання (в градусах) окремо або як кортеж (cx, yc, rx, ry, rotation).
color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.thicknessвизначає товщину меж у пікселях.Передайте
fillзі значенням True для заповнення еліпса.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Малює текст 8x10 починаючи з місця (x, y) на зображенні. Ви можете передавати x, y окремо або як кортеж (x, y).
text– це рядок для запису на зображення.\n,\rта\r\nзакінчення рядків переміщують курсор на наступний рядок.color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.scaleможе бути збільшений для збільшення/зменшення розміру тексту на зображенні. Ви можете передавати цілі або числа з плаваючою комою, що більші за 0.x_spacingдозволяє додавати (якщо позитивне) або віднімати (якщо негативне) x пікселів між символами.y_spacingдозволяє додавати (якщо позитивне) або віднімати (якщо негативне) y пікселів між символами (для багаторядкового тексту).mono_spaceза замовчуванням True, що примушує текст мати фіксований пробіл. Для великих масштабів тексту це виглядає жахливо. Встановіть False для отримання нефіксованого міжсимвольного відстані, що виглядає НАБАГАТО краще.char_rotationможе бути 0, 90, 180, 270 для повороту кожного символу в рядку на цю величину.char_hmirrorякщо True, горизонтально відзеркалює всі символи в рядку.char_vflipякщо True, вертикально перевертає всі символи в рядку.string_rotationможе бути 0, 90, 180, 270 для повороту рядка на цю величину.string_hmirrorякщо True, горизонтально відзеркалює рядок.string_vflipякщо True, вертикально перевертає рядок.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- draw_cross(x: int, y: int, color: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1) Image¶
Малює хрест в місці x, y. Ви можете передавати x, y окремо або як кортеж (x, y).
color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.sizeвизначає довжину ліній хреста.thicknessвизначає товщину меж у пікселях.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- draw_arrow(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image¶
Малює стрілку від (x0, y0) до (x1, y1) на зображенні. Ви можете передавати x0, y0, x1, y1 окремо або як кортеж (x0, y0, x1, y1).
color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.thicknessвизначає товщину лінії в пікселях.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Малює результат виявлення на зображенні.
detection– це 6-кортеж(rx, ry, rw, rh, cx, cy), що описує обмежувальний прямокутник і центроїд (зазвичай повертається кодом нейронної мережі або відстеження кольору).color1– це колір прямокутника, аcolor2– колір хреста центроїда.size– це розмір хреста центроїда,thicknessконтролює ширину контуру, аfillзаповнює прямокутник.labelякщо надано, малюється поблизу прямокутника, зміщений наlabel_offset(x, y).Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Малює краї ліній між списком кутів, повернутим такими методами, як
blob.corners. Кути – це чотиризначний кортеж двозначних кортежів x/y. Наприклад, [(x1,y1),(x2,y2),(x3,y3),(x4,y4)].color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.sizeякщо більше 0, призводить до малювання кутів як кіл радіусомsize.thicknessвизначає товщину лінії в пікселях.Передайте
fillзі значенням True для заповнення кіл кутів, якщо вони намальовані.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Малює
image, верхній лівий кут якого починається в місці x, y. Ви можете передавати x, y окремо або як кортеж (x, y). Цей метод автоматично обробляє відображення переданого зображення у правильний формат пікселів для цільового зображення, а також безперешкодно обробляє обрізання.Ви також можете передати шлях замість об’єкта зображення, щоб цей метод автоматично завантажив зображення з диска та використав його за один крок. Наприклад,
draw_image("test.jpg").x_scaleвизначає, наскільки відображуване зображення масштабується в напрямку x (float). Якщо це значення від’ємне, зображення буде відзеркалено горизонтально. Зверніть увагу, що якщоy_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.y_scaleвизначає, наскільки відображуване зображення масштабується в напрямку y (float). Якщо це значення від’ємне, зображення буде перевернуто вертикально. Зверніть увагу, що якщоx_scaleне вказано, воно відповідатимеx_scaleдля збереження пропорцій.roi– це кортеж прямокутника області інтересу (x, y, w, h) вихідного зображення для малювання. Це дозволяє вилучити лише пікселі в ROI для масштабування та малювання на цільовому зображенні.rgb_channel– це канал RGB (0=R, G=1, B=2) для вилучення із зображення RGB565 (якщо передається) та відображення на цільовому зображенні. Наприклад, якщо передатиrgb_channel=1, це вилучить зелений канал вихідного зображення RGB565 та намалює його у відтінках сірого на цільовому зображенні.alphaвизначає, яку частину вихідного зображення змішати з цільовим зображенням. Значення 255 малює непрозоре вихідне зображення, тоді як значення менше 255 створює суміш між вихідним і цільовим зображенням. 0 означає відсутність змін цільового зображення.color_paletteякщо неNone, може бути перерахуванням палітри кольорів або зображенням RGB565 із 256 пікселями загалом для використання як таблицю кольорового пошуку за значенням у відтінках сірого будь-якого вихідного зображення. Це застосовується після вилученняrgb_channel, якщо використовується.alpha_paletteякщо неNone, може бути зображенням GRAYSCALE із 256 пікселями загалом для використання як альфа-палітру, що модулює значенняalphaвихідного зображення, яке малюється, на рівні пікселів, дозволяючи точно контролювати альфа-значення пікселів на основі їх значення у відтінках сірого. Значення пікселя 255 в таблиці пошуку альфа є непрозорим, і все, що менше 255, стає більш прозорим до 0. Це застосовується після вилученняrgb_channel, якщо використовується.hint– це логічне АБО прапорців, перерахованих у Прапорці підказок (включаючиimage.BLACK_BACKGROUND, який підтримується тут).transform– цеndarray3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..
- 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¶
Малює ключові точки об’єкта ключових точок на зображенні. Ви також можете передати список кортежів з трьома значеннями, що містять (x, y, rotation_angle_in_degrees), щоб повторно використовувати цей метод для малювання гліфів ключових точок, які є колом з лінією, що вказує в певному напрямку.
color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.sizeвизначає, наскільки великими є ключові точки.thicknessвизначає товщину лінії в пікселях.Передайте
fillзі значенням True для заповнення ключових точок.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Заповнює область зображення заливкою, починаючи з місця x, y. Ви можете передавати x, y окремо або як кортеж (x, y).
seed_thresholdвизначає, наскільки будь-який піксель в площі заливки може відрізнятися від початкового початкового пікселя.floating_thresholdвизначає, наскільки будь-який піксель в площі заливки може відрізнятися від будь-яких сусідніх пікселів.color– це кортеж RGB888 для зображень Grayscale або RGB565. За замовчуванням білий. Однак ви також можете передати базове значення пікселя (0-255) для зображень у відтінках сірого або значення RGB565 для зображень RGB565.Передайте
invertяк True, щоб перефарбувати все за межами зв’язаної площі заливки.Передайте
clear_backgroundяк True, щоб обнулити решту пікселів, які не були перефарбовані заливкою.mask– це інше зображення, що використовується як маска на рівні пікселів для операції. Маска повинна бути зображенням лише з чорними або білими пікселями та повинна мати той самий розмір, що й зображення, над яким виконується операція. При заповненні заливкою оцінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
Цей метод недоступний на OpenMV Cam M4.
- draw_event_histogram(array: ndarray, clear: bool = True, brightness: int = 128, contrast: int = 16) Image¶
Растеризує масив подій ndarray (заповнений
csi.IOCTL_GENX320_READ_EVENTS) наImageдля візуалізації. Буфер зображення повинен бути зображенням GRAYSCALE розміром 320x320.Для кожного рядка
csi.PIX_ON_EVENTдо пікселя події додається+contrast; для кожного рядкаcsi.PIX_OFF_EVENTвід пікселя віднімається-contrast. Тригерні події ігноруються. Значення пікселів обмежуються до 0-255.clearякщо True, скидає буфер зображення доbrightnessперед малюванням — кожен кадр стає новим відображенням лише подій. Встановіть False для накопичення подій протягом кількох викликів (корисно для довгої витримки з відображенням траєкторій руху).brightnessвизначає базовий рівень середньо-сірого, до якого скидається буфер, колиclearмає значення True. Стандартне значення 128 розміщує події ON на яскравому кінці, а події OFF – на темному кінці з рівним запасом.contrastвизначає, наскільки кожна подія зміщує свій піксель – вищі значення роблять події помітнішими, ціною швидкого насичення, коли багато подій потрапляє на один піксель.
Методи маскування¶
- mask_rectangle(x: int, y: int, w: int, h: int) Image¶
Обнуляє прямокутну частину зображення. Якщо аргументи не вказано, цей метод обнуляє центр зображення.
Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- mask_circle(x: int, y: int, radius: int) Image¶
Обнуляє кругову частину зображення. Якщо аргументи не вказано, цей метод обнуляє центр зображення.
Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- mask_ellipse(x: int, y: int, radius_x: int, radius_y: int, rotation_angle_in_degrees: int) Image¶
Обнуляє частину зображення у формі еліпса. Якщо аргументи не вказано, цей метод обнуляє центр зображення.
Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
Бінарні методи¶
- binary(thresholds: List[Tuple[int, int]], invert: bool = False, zero: bool = False, mask: Image | None = None, to_bitmap: bool = False, copy: bool = False) Image¶
Встановлює всі пікселі зображення в чорний або білий колір залежно від того, чи знаходиться кожен піксель в одному з порогових кортежів у
thresholds.thresholds– це список кортежів(lo, hi)для зображень у відтінках сірого, або кортежів(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)для зображень RGB565. Поміняні місцями мінімальні/максимальні значення виправляються автоматично; відсутні компоненти за замовчуванням відповідають максимальному діапазону.invertінвертує порогове відповідання.zeroякщо True, обнуляє порогові пікселі та залишає інші незміненими.mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.to_bitmapякщо True, перетворює дані зображення на бітмап із 1 бітом на піксель. Для дуже малих зображень це може вимагатиcopy=True.copyякщо True, повертає нове зображення в купі замість зміни вихідного зображення.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- invert() Image¶
Інвертує всі значення пікселів у зображенні (кожен піксель стає
255 - pixelдля 8-бітних каналів).Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
- b_and(image: Image, mask: Image | None = None) Image¶
Логічне AND цього зображення з іншим зображенням.
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- b_nand(image: Image, mask: Image | None = None) Image¶
Логічне NAND цього зображення з іншим зображенням.
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- b_or(image: Image, mask: Image | None = None) Image¶
Логічне OR цього зображення з іншим зображенням.
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- b_nor(image: Image, mask: Image | None = None) Image¶
Логічне NOR цього зображення з іншим зображенням.
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- b_xor(image: Image, mask: Image | None = None) Image¶
Логічне XOR цього зображення з іншим зображенням.
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- b_xnor(image: Image, mask: Image | None = None) Image¶
Логічне XNOR цього зображення з іншим зображенням.
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
Методи ISP¶
- awb(max: bool = False) Image¶
Виконує автоматичний баланс білого на зображенні за допомогою алгоритму сірого світу. Працює з зображеннями RAW Bayer або RGB565. Не має ефекту на бінарних/grayscale зображеннях.
maxякщо True, використовує алгоритм білої плями замість цього.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених або yuv зображеннях.
- ccm(matrix: List[List[float]]) Image¶
Множить передану матрицю корекції кольору з плаваючою комою на зображення. Матриці можуть бути 3x3 або 3x4 (зі стовпцем зміщення), у вкладеному або плоскому списковому вигляді:
[[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]
Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
- gamma(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image¶
Регулює гаму, контрастність і яскравість зображення.
gammaзастосовуєpow(pixel, 1/gamma)після нормалізації. Значення більше 1.0 освітлюють; менше 1.0 затемнюють.contrastзастосовуєpixel * contrastпісля нормалізації.brightnessзастосовуєpixel + brightnessпісля нормалізації.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених або bayer/yuv зображеннях.
Математичні методи¶
- negate() Image¶
Псевдонім для
Image.invert.
- replace(image: Image | None = None, **kwargs) Image¶
Псевдонім для
Image.draw_image(). Замінює це зображення наimage(або перетворює це зображення на місці, якщоimageопущено), використовуючи стандартні аргументи ключових слівdraw_image. Аргументtransform– цеndarray3x3, що описує перспективне перетворення (підтримується лише на камерах OpenMV з увімкненим ULAB).
- assign(image: Image | None = None, **kwargs) Image¶
Псевдонім для
Image.replace().
- set(image: Image | None = None, **kwargs) Image¶
Псевдонім для
Image.replace().
- add(image: Image, mask: Image | None = None) Image¶
Додає зображення до цього попіксельно.
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- sub(image: Image, mask: Image | None = None) Image¶
Віднімає
imageвід цього зображення попіксельно (self - image).imageможе бути або об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm), або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Цей метод також приймає повний набір аргументів ключових слів
Image.draw_image()(x,y,x_scale,y_scale,roi,rgb_channel,alpha,color_palette,alpha_palette,hint,transform).Не підтримується на стиснених зображеннях або зображеннях bayer.
- rsub(image: Image, mask: Image | None = None) Image¶
Зворотне віднімання: замінює це зображення на
image - selfпопіксельно. В іншому ідентичноImage.sub().
- min(image: Image, mask: Image | None = None) Image¶
Повертає мінімальне зображення двох зображень попіксельно.
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- max(image: Image, mask: Image | None = None) Image¶
Повертає максимальне зображення двох зображень попіксельно.
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- difference(image: Image, mask: Image | None = None) Image¶
Повертає зображення абсолютної різниці між двома зображеннями (наприклад, ||a-b||).
imageможе бути об’єктом зображення, шляхом до нестисненого файлу зображення (bmp/pgm/ppm) або скалярним значенням (кортеж RGB888 або базове значення пікселя).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
- blend(image: Image, x: int = 0, y: int = 0, alpha: int = 128, mask: Image | None = None, **kwargs) Image¶
Псевдонім для
Image.draw_image(). Альфа-змішуєimageз цим зображенням.alpha– це ціле число від 0 до 256; значення ближче до 256 надають перевагу вихідному зображенню. Приймає всі аргументи ключових слівImage.draw_image().
- histeq(adaptive: bool = False, clip_limit: float = -1, mask: Image | None = None) Image¶
Виконує еквалізацію гістограми на зображенні для нормалізації контрасту і яскравості.
adaptiveякщо True, виконує адаптивну еквалізацію гістограми (повільніша, але загалом краща).clip_limitобмежує контраст у адаптивному варіанті (мале значення, наприклад 10, дає гарні результати CLAHE).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
Методи фільтрації¶
- erode(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Видаляє пікселі з країв сегментованих областей. Здійснює згортку ядра
((size*2)+1)x((size*2)+1)по зображенню, очищуючи центральний піксель, якщо більшеthresholdсусідів очищені (діє як стандартне ерозіювання, якщоthresholdдорівнює None).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
- dilate(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Додає пікселі до країв сегментованих областей. Здійснює згортку ядра
((size*2)+1)x((size*2)+1)по зображенню, встановлюючи центральний піксель, якщо більшеthresholdсусідів встановлені (діє як стандартне розширення, якщоthresholdдорівнює None).mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
- open(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Виконує ерозію, потім розширення. Дивіться
Image.erode()таImage.dilate().mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
- close(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Виконує розширення, потім ерозію. Дивіться
Image.dilate()таImage.erode().mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
- top_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Повертає різницю зображення та зображення після
Image.open().mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
- black_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Повертає різницю зображення та зображення після
Image.close().mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
- mean(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Стандартний фільтр середнього розмиття з використанням блокового фільтра.
size– це розмір ядра. Використовуйте 1 (ядро 3x3), 2 (ядро 5x5) тощо.thresholdякщо True, адаптивно порогує вихід фільтра до бінарного зображення.offsetзміщує бінаризацію (від’ємне робить більше пікселів білими, позитивне – менше).invertінвертує бінарний вихід.mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Запускає процентильний фільтр на зображенні (за замовчуванням медіана).
size– це розмір ядра. Використовуйте 1 (ядро 3x3), 2 (ядро 5x5) тощо.percentile– це процентиль, що вибирається з кожного ядра (0 = мінімум, 0.5 = медіана, 1.0 = максимум). За замовчуванням 0.5.thresholdякщо True, адаптивно порогує вихід фільтра до бінарного зображення.offsetзміщує бінаризацію (від’ємне робить більше пікселів білими, позитивне – менше).invertінвертує бінарний вихід.mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
- mode(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Замінює кожен піксель модою його сусідів. Може призводити до артефактів на краях зображень RGB через нелінійну операцію.
size– це розмір ядра. Використовуйте 1 (ядро 3x3), 2 (ядро 5x5) тощо.thresholdякщо True, адаптивно порогує вихід фільтра до бінарного зображення.offsetзміщує бінаризацію (від’ємне робить більше пікселів білими, позитивне – менше).invertінвертує бінарний вихід.mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Запускає фільтр середньої точки на зображенні. Цей фільтр знаходить середню точку ((max-min)/2) кожного сусідства пікселів у зображенні.
size– це розмір ядра. Використовуйте 1 (ядро 3x3), 2 (ядро 5x5) тощо.biasвизначає змішування min/max. 0 лише для мінімальної фільтрації, 1.0 лише для максимальної фільтрації. Використовуючиbias, ви можете мінімально/максимально фільтрувати зображення.thresholdякщо True, адаптивно порогує вихід фільтра до бінарного зображення.offsetзміщує бінаризацію (від’ємне робить більше пікселів білими, позитивне – менше).invertінвертує бінарний вихід.mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Здійснює згортку зображення з довільним ядром фільтра.
sizeвизначає розмір ядра, що повинен бути((size*2)+1)x((size*2)+1)елементів.kernel– це ядро для згортки, як плаский одновимірний список/кортеж із((size*2)+1)*((size*2)+1)елементів, або як двовимірний список/кортеж із рядками((size*2)+1)по((size*2)+1)елементів.mul– це мультиплікативний масштаб контрасту (за замовчуванням 1.0).add– це адитивне зміщення яскравості (за замовчуванням 0.0).thresholdякщо True, адаптивно порогує вихід фільтра до бінарного зображення.offsetзміщує бінаризацію (від’ємне робить більше пікселів білими, позитивне – менше).invertінвертує бінарний вихід.mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Здійснює згортку зображення зі згладжувальним гаусівським ядром.
size– це розмір ядра. Використовуйте 1 (ядро 3x3), 2 (ядро 5x5) тощо.unsharpякщо True, виконує операцію нерізкого маскування (загострює краї) замість звичайного гаусівського.mul– це мультиплікативний масштаб контрасту (за замовчуванням 1.0).add– це адитивне зміщення яскравості (за замовчуванням 0.0).thresholdякщо True, адаптивно порогує вихід фільтра до бінарного зображення.offsetзміщує бінаризацію (від’ємне робить більше пікселів білими, позитивне – менше).invertінвертує бінарний вихід.mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Здійснює згортку зображення з лапласівським ядром для виявлення країв.
size– це розмір ядра. Використовуйте 1 (ядро 3x3), 2 (ядро 5x5) тощо.sharpenякщо True, загострює зображення замість виведення сирої непорогованої відповіді на краї.mul– це мультиплікативний масштаб контрасту (за замовчуванням 1.0).add– це адитивне зміщення яскравості (за замовчуванням 0.0).thresholdякщо True, адаптивно порогує вихід фільтра до бінарного зображення.offsetзміщує бінаризацію (від’ємне робить більше пікселів білими, позитивне – менше).invertінвертує бінарний вихід.mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Здійснює згортку зображення з білатеральним фільтром (згладжування із збереженням країв).
size– це розмір ядра. Використовуйте 1 (ядро 3x3), 2 (ядро 5x5) тощо.color_sigmaвизначає допуск відповідності кольорів; більші значення призводять до більшого розмиття кольорів.space_sigmaвизначає просторове розмиття; більші значення призводять до більшого розмиття пікселів.thresholdякщо True, адаптивно порогує вихід фільтра до бінарного зображення.offsetзміщує бінаризацію (від’ємне робить більше пікселів білими, позитивне – менше).invertінвертує бінарний вихід.mask– це бінарне зображення, що використовується як маска на рівні пікселів; змінюються лише пікселі, встановлені в масці.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer/yuv.
Геометричні методи¶
- linpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image¶
Перепроектує зображення з декартових координат на лінійні полярні координати.
Встановіть
reverse=Trueдля перепроектування у зворотньому напрямку.xтаyвказують координату центру перетворення в пікселях зображення. Якщоxмає значенняNone(за замовчуванням), він встановлюється на половину ширини зображення; так самоyза замовчуванням дорівнює половині висоти зображення.Лінійне полярне перепроектування перетворює обертання зображення на x-трансляцію.
Не підтримується на стиснених зображеннях або зображеннях bayer.
Цей метод недоступний на OpenMV Cam M4.
- logpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image¶
Перепроектує зображення з декартових координат на логарифмічні полярні координати.
Встановіть
reverse=Trueдля перепроектування у зворотньому напрямку.xтаyвказують координату центру перетворення в пікселях зображення. Якщоxмає значенняNone(за замовчуванням), він встановлюється на половину ширини зображення; так самоyза замовчуванням дорівнює половині висоти зображення.Логарифмічне полярне перепроектування перетворює обертання зображення на x-трансляцію, а масштабування/збільшення – на y-трансляцію.
Не підтримується на стиснених зображеннях або зображеннях bayer.
Цей метод недоступний на OpenMV Cam M4.
- lens_corr(strength: float = 1.8, zoom: float = 1.0, x_corr: float = 0.0, y_corr: float = 0.0) Image¶
Виконує корекцію лінзи для усунення ефекту «риб’ячого ока» через спотворення лінзи.
strength– це float, що визначає, наскільки сильно усунути ефект «риб’ячого ока». Спробуйте 1.8 за замовчуванням, а потім збільшуйте або зменшуйте, поки зображення не буде виглядати добре.zoom– це кількість збільшення зображення. За замовчуванням 1.0.x_corr– це зміщення пікселів з плаваючою комою від центру. Може бути від’ємним або позитивним.y_corr– це зміщення пікселів з плаваючою комою від центру. Може бути від’ємним або позитивним.Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях 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¶
Коригує проблеми з перспективою у зображенні, виконуючи 3D-обертання кадрового буфера.
x_rotation– це кількість градусів для обертання зображення в кадровому буфері навколо осі x (тобто це обертає зображення вгору і вниз).y_rotation– це кількість градусів для обертання зображення в кадровому буфері навколо осі y (тобто це обертає зображення вліво і вправо).z_rotation– це кількість градусів для обертання зображення в кадровому буфері навколо осі z (тобто це обертає зображення на місці).x_translation– це кількість одиниць для переміщення зображення вліво або вправо після обертання. Оскільки ця трансляція застосовується в 3D просторі, одиниці не є пікселями…y_translation– це кількість одиниць для переміщення зображення вгору або вниз після обертання. Оскільки ця трансляція застосовується в 3D просторі, одиниці не є пікселями…zoom– це кількість збільшення зображення. За замовчуванням 1.0.fov– це поле зору, що використовується для внутрішньої проекції 2D->3D. Колиfovнаближається до 0, зображення розміщується на нескінченності; коли воно наближається до 180, зображення розміщується у вікні перегляду.corners– це список чотирьох кортежів (x, y), що використовується для побудови гомографії з 4 точок, відображаючи кути на (0, 0), (image_width-1, 0), (image_width-1, image_height-1) та (0, image_height-1) перед застосуванням 3D-обертання. Корисно для перетворень «виду з висоти пташиного польоту».Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію
..Не підтримується на стиснених зображеннях або зображеннях bayer.
Цей метод недоступний на OpenMV Cam M4.
Методи отримання¶
- 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¶
Обчислює подібність між двома зображеннями за допомогою індексу структурної подібності (SSIM). SSIM варіюється від -1 (протилежні) до 1 (ідентичні). Повертає об’єкт
image.similarity.image– це зображення для порівняння (об’єкт зображення або рядок шляху, наприклад"test.jpg").x,y,x_scale,y_scale,roi,rgb_channel,alpha,color_palette,alpha_palette,hintтаtransformприймають ті самі значення, що йImage.draw_image().dssimякщо True, повертає Індекс структурної несхожості (DSSIM) замість цього, де 0 означає ідентичні, а 1 – повністю різні.
- 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¶
Обчислює нормалізовану гістограму по всіх колірних каналах для
roiта повертає об’єктimage.histogram. Також доступно якImage.get_hist()абоImage.histogram().thresholds– це список кортежів(lo, hi)для зображень у відтінках сірого, або кортежів(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)для зображень RGB565. Якщо передано, гістограма обчислюється лише по пікселях у межах порогів.invertінвертує порогове відповідання.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.bins(відтінки сірого) абоl_bins/a_bins/b_bins(RGB565) встановлюють кількість бінів гістограми на канал. Повинно бути більше 2. За замовчуванням максимальна кількість бінів на канал.differenceможе бути встановлено на об’єкт зображення для роботи з різницею між поточним зображенням та тим зображенням без додаткового буфера.Не підтримується на стиснених зображеннях або зображеннях 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¶
Обчислює середнє, медіану, моду, стандартне відхилення, мінімум, максимум, нижній квартиль та верхній квартиль по всіх колірних каналах для
roiта повертає об’єктimage.statistics. Також доступно якImage.get_stats()абоImage.statistics().thresholds– це список кортежів(lo, hi)для зображень у відтінках сірого, або кортежів(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)для зображень RGB565. Якщо передано, статистика обчислюється лише по пікселях у межах порогів.invertінвертує порогове відповідання.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.bins(відтінки сірого) абоl_bins/a_bins/b_bins(RGB565) встановлюють кількість бінів гістограми на канал. Повинно бути більше 2. За замовчуванням максимальна кількість бінів на канал.differenceможе бути встановлено на об’єкт зображення для роботи з різницею між поточним зображенням та тим зображенням без додаткового буфера.Не підтримується на стиснених зображеннях або зображеннях 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¶
Обчислює лінійну регресію (Тейл-Сен) по всіх порогових пікселях у зображенні. Повертає об’єкт
image.line, або None, якщо лінія не знайдена.thresholds– це список кортежів(lo, hi)для зображень у відтінках сірого, або кортежів(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)для зображень RGB565.invertінвертує порогове відповідання.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.x_strideтаy_strideвизначають, скільки пікселів пропускається при оцінюванні зображення.area_threshold– мінімальна площа обмежувального прямокутника; менші результати повертають None.pixels_threshold– мінімальна кількість порогових пікселів; менші результати повертають None.target_size– це кортеж(w, h). ROI масштабується за площею до розміру, що вписується всередину цього розміру перед запуском алгоритму O(N^2). За замовчуванням(80, 60).Не підтримується на стиснених зображеннях або зображеннях bayer.
Методи виявлення¶
- 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]¶
Знаходить усі плями (зв’язані регіони пікселів, що проходять порогове тестування) у зображенні та повертає список об’єктів
image.blob.thresholds– це список кортежів(lo, hi)для зображень у відтінках сірого, або кортежів(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)для зображень RGB565 (канали LAB). Може бути передано до 32 кортежів. Поміняні місцями мінімальні/максимальні значення виправляються автоматично; відсутні компоненти за замовчуванням відповідають максимальному діапазону.invertінвертує порогове відповідання.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.x_strideтаy_strideвизначають, скільки пікселів пропускається під час пошуку плями. Збільшуйте, якщо відомо, що плями великі.area_threshold– мінімальна площа обмежувального прямокутника; менші плями фільтруються.pixels_threshold– мінімальна кількість порогових пікселів; менші плями фільтруються.mergeякщо True, об’єднує плями, обмежувальні прямокутники яких перетинаються.marginзбільшує/зменшує обмежувальні прямокутники, що використовуються для перетину. Об’єднані плями виконують АБО їхніх бітових векторівcode(один біт на поріг).threshold_cbвикликається для кожної плями після порогування; поверніть True для збереження, False для фільтрування.merge_cbвикликається для кожної пари плям, що мають бути об’єднані; поверніть True для дозволу об’єднання, False для його запобігання.x_hist_bins_maxякщо ненульове, заповнює кожну пляму проекцією x_histogram з використанням цієї кількості бінів.y_hist_bins_maxякщо ненульове, заповнює кожну пляму проекцією y_histogram з використанням цієї кількості бінів.Не підтримується на стиснених зображеннях або зображеннях 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]¶
Знаходить усі нескінченні лінії у зображенні за допомогою перетворення Хафа. Повертає список об’єктів
image.line.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.x_strideтаy_strideвизначають, скільки пікселів пропускається під час перетворення Хафа.threshold– мінімальна величина лінії (сума магнітуд Собеля вздовж лінії); лінії нижче цього значення фільтруються.theta_marginтаrho_marginвизначають об’єднання: лінії в межах цих порогів об’єднуються.Не підтримується на стиснених зображеннях або зображеннях bayer.
Цей метод недоступний на 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]¶
Знаходить відрізки ліній у зображенні. Повертає список об’єктів
image.line.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.merge_distance– максимальна пікселна відстань між двома відрізками для їх об’єднання.max_theta_difference– максимальна різниця тета в градусах між відрізками для їх об’єднання.Цей метод недоступний на 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]¶
Знаходить кола у зображенні за допомогою перетворення Хафа. Повертає список об’єктів
image.circle.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.x_strideтаy_strideвизначають, скільки пікселів пропускається під час перетворення Хафа.threshold– мінімальна величина кола (сума магнітуд Собеля вздовж кола); кола нижче цього значення фільтруються.x_margin,y_marginтаr_marginвизначають об’єднання: кола в межах цих порогів об’єднуються.r_min– мінімальний радіус кола. За замовчуванням 2.r_max– максимальний радіус кола. За замовчуваннямmin(roi.w/2, roi.h/2).r_step– крок радіусу. За замовчуванням 2.Цей метод недоступний на OpenMV Cam M4.
- find_rects(roi: Tuple[int, int, int, int] | None = None, threshold: int = 1000) List[rect]¶
Знаходить прямокутники у зображенні за допомогою алгоритму виявлення квадратів apriltag. Повертає список об’єктів
image.rect.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.threshold– мінімальна величина країв (сума магнітуд Собеля вздовж країв прямокутника); прямокутники нижче цього значення фільтруються.Цей метод недоступний на OpenMV Cam M4.
- find_qrcodes(roi: Tuple[int, int, int, int] | None = None) List[qrcode]¶
Знаходить усі QR-коди в межах
roiта повертає список об’єктівimage.qrcode.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.Цей метод недоступний на 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]¶
Знаходить усі AprilTag у межах
roiта повертає список об’єктівimage.apriltag.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.families– це бітова маска сімейств тегів для декодування. Це логічне АБО:За замовчуванням
image.TAG36H11. Час виявлення масштабується з кількістю увімкнених сімейств.fxтаfy– це фокусні відстані камери по X і Y у пікселях.cxтаcy– це центр зображення, зазвичайimage.width()/2таimage.height()/2.Не підтримується на стиснених зображеннях.
Цей метод недоступний на OpenMV Cam M4.
- find_datamatrices(roi: Tuple[int, int, int, int] | None = None, effort: int = 200) List[datamatrix]¶
Знаходить усі Data Matrix в межах
roiта повертає список об’єктівimage.datamatrix.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.effortвизначає, скільки часу витрачати на пошук відповідностей Data Matrix. Вищі значення покращують виявлення ціною частоти кадрів. Значення нижче ~160 не можуть виявити; значення вище ~240 дають зменшувану віддачу. За замовчуванням 200.Цей метод недоступний на OpenMV Cam M4.
- find_barcodes(roi: Tuple[int, int, int, int] | None = None) List[barcode]¶
Знаходить усі одновимірні штрих-коди в межах
roiта повертає список об’єктівimage.barcode. Сканує як горизонтально, так і вертикально.Підтримувані типи штрих-кодів:
image.EAN2,image.EAN5,image.EAN8,image.UPCE,image.ISBN10,image.UPCA,image.EAN13,image.ISBN13,image.I25,image.DATABAR(RSS-14),image.DATABAR_EXP(RSS-Expanded),image.CODABAR,image.CODE39,image.PDF417,image.CODE93,image.CODE128.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.Цей метод недоступний на 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¶
Знаходить зміщення трансляції цього зображення від
templateза допомогою фазової кореляції. Повертає об’єктimage.displacement.roi– це прямокутник області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.template_roi– це область інтересу шаблону. За замовчуванням дорівнює прямокутнику зображення шаблону.roiтаtemplate_roiповинні мати однакову ширину та висоту.logpolarякщо True, повертає зміну обертання/масштабу замість x/y трансляції.fix_rotation_scaleякщо True, обчислює зміщення після вирівнювання обертання та масштабу (має сенс лише колиlogpolar=False).Примітка
Використовуйте цей метод на розмірах зображень, що є степенями 2 (наприклад,
sensor.B64X64).Не підтримується на стиснених зображеннях або зображеннях bayer. Недоступний на 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¶
Намагається знайти перше місце в зображенні, де
templateзбігається за допомогою нормалізованої перехресної кореляції. Повертає кортеж обмежувального прямокутника (x, y, w, h) або None.template– це зображення у відтінках сірого для порівняння з цим зображенням.threshold– це значення (0.0-1.0). Вищі значення зменшують хибно позитивні результати та виявлення; нижчі значення дають протилежний ефект.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.step– це кількість пікселів для пропуску під час пошуку (використовується лише в режиміimage.SEARCH_EX).search– цеimage.SEARCH_DS(швидший пошук ромбом) абоimage.SEARCH_EX(вичерпний пошук).Працює лише на зображеннях у відтінках сірого.
- 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]]¶
Шукає у зображенні зони, що відповідають переданому каскаду Хаара, та повертає список кортежів обмежувального прямокутника (x, y, w, h). Повертає порожній список, якщо ознаки не знайдені.
cascade– це об’єкт каскаду Хаара (дивітьсяimage.HaarCascade()).threshold(0.0-1.0). Нижчі значення підвищують частоту виявлення та частоту хибно позитивних результатів.scaleповинен бути більше 1.0. Вищі значення працюють швидше, але дають гірші збіги.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.
- find_eye(roi: Tuple[int, int, int, int]) Tuple[int, int]¶
Шукає зіницю в кортежі (x, y, w, h) прямокутника області інтересу навколо ока. Повертає місце (x, y) зіниці або (0, 0), якщо нічого не знайдено.
roi– це кортеж прямокутника області інтересу (x, y, w, h).Працює лише на зображеннях у відтінках сірого.
- find_lbp(roi: Tuple[int, int, int, int]) lbp_descriptor¶
Вилучає ключові точки LBP (локальні бінарні шаблони) з області інтересу. Використовуйте
image.match_descriptor()для порівняння двох дескрипторів.roi– це кортеж прямокутника області інтересу (x, y, w, h).Працює лише на зображеннях у відтінках сірого.
- 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¶
Вилучає ключові точки ORB з області інтересу. Використовуйте
image.match_descriptor()для порівняння двох дескрипторів. Повертає None, якщо ключові точки не знайдені.roi– це кортеж прямокутника області інтересу (x, y, w, h). За замовчуванням дорівнює прямокутнику зображення.threshold(0-255) визначає кількість вилучених кутів. Нижчі пороги дають більше кутів. Використовуйте ~20 для AGAST, ~60-80 для FAST.normalizedякщо True, вимикає багаторозширне вилучення ключових точок.scale_factorповинен бути більше 1.0. Вищі значення працюють швидше, але дають гірші збіги.max_keypoints– це максимальна кількість ключових точок для збереження.corner_detector– цеimage.CORNER_FASTабоimage.CORNER_AGAST.Працює лише на зображеннях у відтінках сірого.
- find_edges(edge_type: int, threshold: Tuple[int, int] = (100, 200)) Image¶
Перетворює зображення на чорно-біле, залишаючи лише краї як білі пікселі.
image.EDGE_SIMPLE - Простий алгоритм фільтра верхніх частот з порогуванням.
image.EDGE_CANNY - Алгоритм виявлення країв Кенні.
threshold– це двозначний кортеж, що містить нижній поріг та верхній поріг. Ви можете контролювати якість країв, регулюючи ці значення. За замовчуванням (100, 200).Працює лише на зображеннях у відтінках сірого.
- find_hog(roi: Tuple[int, int, int, int] | None = None, size: int = 8) Image¶
Замінює пікселі в ROI лініями HOG (гістограма орієнтованих градієнтів).
roi– це кортеж прямокутника області інтересу (x, y, w, h). Якщо не вказано, він дорівнює прямокутнику зображення. Оперується лише з пікселями в межахroi.Працює лише на зображеннях у відтінках сірого.
Цей метод недоступний на OpenMV Cam M4.
- stereo_disparity(reversed: bool = False, max_disparity: int = 64, threshold: int = 64) Image¶
Приймає подвійно широке зображення у відтінках сірого, що містить вихід двох поруч розташованих датчиків камери, та замінює одну половину зображенням стереодиспаратності (кожен піксель представляє глибину). Наприклад, для двох камер 320x240 передайте зображення 640x240.
reversedЗа замовчуванням ліве зображення порівнюється з правим, а праве замінюється. Встановіть True для порівняння право->ліво і заміни лівого зображення.max_disparity– це максимальна відстань (1-255) для пошуку відповідного блоку пікселів методом суми абсолютних різниць. Більші значення займають експоненційно більше часу, але дають вищу якість виводу.threshold– якщо сума абсолютних різниць між двома блоками менша або рівна цьому порогу, вони вважаються відповідними.
- 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]]¶
Запускає вибірковий пошук на зображенні та повертає список кортежів обмежувального прямокутника (x, y, w, h) пропозицій об’єктів.
threshold– це поріг сегментації; вищі значення дають менше/більші регіони.size– це мінімальний розмір регіону після об’єднання.a1,a2,a3– це ваги подібності кольорів/текстури/розміру, що використовуються при об’єднанні регіонів.