клас 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 з об’єкта JPEG bytes() або 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 для автоматичної передачі.

Основні методи

width() int

Повертає ширину зображення в пікселях.

height() int

Повертає висоту зображення в пікселях.

format() int

Повертає image.GRAYSCALE для зображень у відтінках сірого, image.RGB565 для зображень RGB565, image.BAYER для зображень із шаблоном Байєра, та image.JPEG для зображень JPEG.

size() int

Повертає розмір зображення в байтах.

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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.

copy якщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.

copy_to_fb якщо True, зображення завантажується безпосередньо в кадровий буфер. copy_to_fb має пріоритет над copy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.

quality визначає якість стиснення зображення jpeg. Значення може бути від 0 до 100.

subsampling може бути:

Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію ..

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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на OpenMV Cam N6, оскільки він має GPU, який може робити це апаратно.

copy якщо True, створює глибоку копію перетвореного зображення в купі, а не перетворює вихідне зображення на місці.

copy_to_fb якщо True, зображення завантажується безпосередньо в кадровий буфер. copy_to_fb має пріоритет над copy. Це не має особливого ефекту, якщо зображення вже знаходиться в кадровому буфері.

quality визначає якість стиснення зображення jpeg. Значення може бути від 0 до 100.

subsampling може бути:

Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію ..

Примітка

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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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).

Повертає об’єкт зображення, щоб ви могли викликати інший метод, використовуючи нотацію ..

flush() None

Оновлює кадровий буфер в IDE зображенням із кадрового буфера на камері.

Методи малювання

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 – це ndarray 3x3, що використовується для виконання перспективного перетворення зображення. Наразі підтримується лише на 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 зображеннях.

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

Псевдонім для Image.gamma.

Математичні методи

negate() Image

Псевдонім для Image.invert.

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

Псевдонім для Image.draw_image(). Замінює це зображення на image (або перетворює це зображення на місці, якщо image опущено), використовуючи стандартні аргументи ключових слів draw_image. Аргумент transform – це ndarray 3x3, що описує перспективне перетворення (підтримується лише на камерах 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 – якщо сума абсолютних різниць між двома блоками менша або рівна цьому порогу, вони вважаються відповідними.

Запускає вибірковий пошук на зображенні та повертає список кортежів обмежувального прямокутника (x, y, w, h) пропозицій об’єктів.

threshold – це поріг сегментації; вищі значення дають менше/більші регіони.

size – це мінімальний розмір регіону після об’єднання.

a1, a2, a3 – це ваги подібності кольорів/текстури/розміру, що використовуються при об’єднанні регіонів.