class Image – объект Image¶
Image – центральный тип данных модуля image: буфер пикселей в памяти, с которым работают все процедуры рисования, все фильтры, все геометрические преобразования и все процедуры извлечения признаков. Каждый кадр, поступающий из csi.CSI.snapshot(), является объектом Image; то же относится к каждому кадру, загруженному с диска, декодированному из JPEG или PNG, выделенному из массива ndarray в стиле numpy или созданному как пустой холст для рисования.
Объект 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 декодируются непосредственно в ОЗУ (или в буфер кадра камеры, если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.
Индексация, длина, итерация и доступ как к bytes-объекту¶
Индексация –
img[i]читает пиксельi(линейно, построчно).img[i] = valueзаписывает его. Пиксели grayscale / Bayer являются 8-битными целыми числами, пиксели RGB565 / YUV422 – 16-битными упакованными целыми числами, бинарные пиксели равны 0 / 1. Для изображений JPEG / PNG пространство индексов – это сжатый поток байтов, а не пиксели.Длина –
len(img)возвращает количество пикселей для несжатых форматов или количество байтов для сжатых форматов.Итерация –
for px in img: ...проходит по массиву пикселей в том же порядке, что и индексация через[].Bytes-подобный –
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_channel до масштабирования.
image.APPLY_COLOR_PALETTE_FIRST: применить цветовую палитру до масштабирования.
image.SCALE_ASPECT_KEEP: масштабировать рисуемое изображение так, чтобы оно поместилось внутри дисплея.
image.SCALE_ASPECT_EXPAND: масштабировать рисуемое изображение так, чтобы оно заполнило дисплей (приводит к обрезке).
image.SCALE_ASPECT_IGNORE: масштабировать рисуемое изображение так, чтобы оно заполнило дисплей (приводит к растяжению).
image.ROTATE_90: повернуть изображение на 90 градусов (это просто VFLIP | TRANSPOSE).
image.ROTATE_180: повернуть изображение на 180 градусов (это просто HMIRROR | VFLIP).
image.ROTATE_270: повернуть изображение на 270 градусов (это просто HMIRROR | TRANSPOSE).
image.BLACK_BACKGROUND: предполагать, что фоновое изображение, на котором происходит рисование, чёрное, что ускоряет смешивание. Поддерживается только методамиImage.draw_image()иImage.get_similarity().
- class image.Image(arg: str | int | ndarray, height: int = -1, pixformat: int = -1, *, buffer: bytes | bytearray | memoryview | None = None, copy_to_fb: bool = False)¶
Если
arg– строка, то создаётся новый объект изображения из файла по путиarg. Поддерживается загрузка файлов изображений bmp/pgm/ppm/jpg/jpeg/png с диска. Еслиcopy_to_fbравно true, изображение копируется в буфер кадра вместо выделения в куче.Если
arg– этоndarray, то создаётся новый объект изображения изndarray. Объектыndarrayформы(w, h)трактуются как изображения в оттенках серого,(w, h, 3)– как изображения RGB565. В настоящее время поддерживаются толькоndarraysс типом float32. При создании изображения таким способом, если вы передаёте аргументbuffer, он будет использован для хранения данных изображения вместо выделения места в куче. Еслиcopy_to_fbравно true, изображение копируется в буфер кадра вместо выделения в куче или использованияbuffer.Если
arg– этоint, то он считается шириной нового изображения, и за ним должны следовать значениеheightи значениеformatдля создания нового пустого объекта изображения.formatможет быть любым значением pixformat изображения, напримерimage.GRAYSCALE. Изображение будет инициализировано нулями. Обратите внимание, что для сжатых форматов изображений ожидается значениеbuffer.bufferрассматривается как источник данных изображения при создании изображений таким способом. При использовании вместе сcopy_to_fbданные изbufferкопируются в буфер кадра. Если вы хотите создать изображение JPEG из объекта JPEGbytes()илиbytearray(), вы можете передатьwidth,height,image.JPEGдля JPEG вместе с установкойbufferв поток байтов JPEG, чтобы создать изображение JPEG.Изображения поддерживают нотацию «[]». Используйте
image[index] = 8/16-bit valueдля присвоения пикселя изображения илиimage[index]для получения пикселя изображения, который будет либо 8-битным значением для изображений grayscale/bayer, либо 16-битным значением для изображений RGB565/YUV. Бинарные изображения возвращают 1-битное значение.Для изображений JPEG нотация «[]» позволяет получить доступ к сжатому блобу изображения JPEG как к байтовому массиву. Однако чтение и запись в массив данных непрозрачны, поскольку изображения JPEG являются сжатыми потоками байтов.
Изображения также поддерживают операции буфера чтения. Вы можете передавать изображения во всевозможные функции MicroPython, как если бы изображение было объектом байтового массива. В частности, если вы хотите передать изображение, вы можете просто передать его в функции записи UART/SPI/I2C для автоматической передачи.
Базовые методы¶
- format() int¶
Возвращает
image.GRAYSCALEдля изображений в оттенках серого,image.RGB565для изображений RGB565,image.BAYERдля изображений с паттерном Байера иimage.JPEGдля изображений JPEG.
- bytearray() bytearray¶
Возвращает объект
bytearray, указывающий на данные изображения, для доступа к чтению/записи на уровне байтов.Примечание
Объекты изображений автоматически приводятся к объектам
bytesпри передаче в драйвер MicroPython, который требует объект, подобныйbytes. Это доступ только для чтения. Вызовитеbytearray(), чтобы получить доступ для чтения/записи.
- get_pixel(x: int, y: int, rgbtuple: bool | None = None) int | Tuple[int, int, int]¶
Для изображений в оттенках серого: возвращает значение пикселя в оттенках серого в позиции (x, y). Для изображений RGB565: возвращает кортеж пикселя RGB888 (r, g, b) в позиции (x, y). Для изображений с паттерном Байера: возвращает значение пикселя в позиции (x, y).
Возвращает None, если
xилиyнаходится за пределами изображения.xиyмогут передаваться либо независимо, либо в виде кортежа.rgbtupleесли True, заставляет этот метод возвращать кортеж RGB888. В противном случае этот метод возвращает целочисленное значение базового пикселя. То есть для изображений RGB565 этот метод возвращает значение RGB565. По умолчанию True для изображений RGB565 и False в остальных случаях.Не поддерживается для сжатых изображений.
Примечание
Image.get_pixel()иImage.set_pixel()– единственные методы, которые позволяют манипулировать изображениями с паттерном Байера. Изображения с паттерном Байера – это буквальные изображения, в которых пиксели расположены R/G/R/G/и т.д. для чётных строк и G/B/G/B/и т.д. для нечётных строк. Каждый пиксель 8-битный. Если вы вызовете этот метод с установленнымrgbtuple, тоImage.get_pixel()выполнит дебайеризацию исходного изображения в этой позиции пикселя и вернёт корректный кортеж RGB888 для данной позиции пикселя.
- set_pixel(x: int, y: int, pixel: int | Tuple[int, int, int]) Image¶
Для изображений в оттенках серого: устанавливает пиксель в позиции (x, y) в значение оттенка серого
pixel. Для изображений RGB565: устанавливает пиксель в позиции (x, y) в кортеж RGB888 (r, g, b)pixel. Для изображений с паттерном Байера: устанавливает значение пикселя в позиции (x, y) в значениеpixel.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..xиyмогут передаваться либо независимо, либо в виде кортежа.pixelможет быть либо кортежем RGB888 (r, g, b), либо базовым значением пикселя (то есть значением RGB565 для изображений RGB565 или 8-битным значением для изображений в оттенках серого).Не поддерживается для сжатых изображений.
Примечание
Image.get_pixel()иImage.set_pixel()– единственные методы, которые позволяют манипулировать изображениями с паттерном Байера. Изображения с паттерном Байера – это буквальные изображения, в которых пиксели расположены R/G/R/G/и т.д. для чётных строк и G/B/G/B/и т.д. для нечётных строк. Каждый пиксель 8-битный. Если вы вызовете этот метод с кортежем RGB888, значение оттенка серого этого кортежа RGB888 извлекается и устанавливается в позицию пикселя.
Методы преобразования¶
- to_ndarray(dtype: str, buffer: bytes | bytearray | memoryview | None = None) ndarray¶
Возвращает объект
ndarray, созданный из изображения. В настоящее время это работает только для изображений GRAYSCALE или RGB565.dtypeможет бытьb,Bилиfдля создания знакового 8-битного, беззнакового 8-битного или 32-битногоndarrayс плавающей точкой. Изображения GRAYSCALE напрямую преобразуются в беззнаковые 8-битные объектыndarray. Для знаковых 8-битных объектовndarrayзначения (0:255) отображаются в (-127:128). Для 32-битных объектовndarrayс плавающей точкой значения отображаются в (0.0:255.0). Изображения RGB565 преобразуются в 3-канальные объектыndarray, и тот же процесс, описанный выше для изображений GRAYSCALE, применяется к каждому каналу в зависимости отdtype. Обратите внимание, чтоdtypeтакже принимает целочисленные значения (например, черезord()) дляb,Bиfсоответственно.bufferесли неNone, является объектомbytearrayдля использования в качестве буфера дляndarray. ЕслиNone, новый буфер выделяется в куче для хранения данных изображенияndarray. Вы можете использовать аргументbuffer, чтобы напрямую выделитьndarrayв предварительно выделенном буфере, экономя выделение в куче и операцию копирования.Возвращаемый
ndarrayимеет форму(height, width)для изображений GRAYSCALE и(height, width, 3)для изображений RGB565.
- to_bitmap(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Преобразует изображение в растровое изображение (1 бит на пиксель).
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Примечание
Растровые изображения подобны изображениям в оттенках серого, но имеют только два значения пикселей – 0 и 1. Кроме того, растровые изображения упакованы так, что хранят только 1 бит на пиксель, что делает их очень компактными. Библиотека изображений OpenMV позволяет использовать растровые изображения везде, где могут использоваться изображения
sensor.GRAYSCALEиsensor.RGB565. Однако многие операции при применении к растровым изображениям не имеют смысла, поскольку растровые изображения имеют только 2 значения. OpenMV рекомендует использовать растровые изображения для значенийmaskв операциях и т.п., так как они довольно легко помещаются в куче MicroPython. Наконец, значения пикселей растрового изображения 0 и 1 интерпретируются как чёрный и белый при применении к изображениямsensor.GRAYSCALEилиsensor.RGB565. Библиотека автоматически обрабатывает преобразование.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- to_grayscale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Преобразует изображение в изображение в оттенках серого (8 бит на пиксель).
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- to_rgb565(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Преобразует изображение в изображение RGB565 (16 бит на пиксель).
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- to_rainbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_RAINBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Преобразует изображение в радужное изображение RGB565 (16 бит на пиксель).
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- to_ironbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Преобразует изображение в изображение RGB565 в палитре ironbow (16 бит на пиксель).
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- to_depth(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Преобразует изображение в изображение глубины RGB565 (16 бит на пиксель).
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может бытьimage.PALETTE_DEPTHили изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- to_evt_dark(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Преобразует изображение в изображение тёмных событий RGB565 (16 бит на пиксель).
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- to_evt_light(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Преобразует изображение в изображение светлых событий RGB565 (16 бит на пиксель).
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- to_jpeg(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image¶
Преобразует изображение в изображение JPEG.
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.qualityуправляет качеством сжатия изображения jpeg. Значение может быть от 0 до 100.subsamplingможет быть:image.JPEG_SUBSAMPLING_AUTO: использовать наилучшую субдискретизацию для изображения на основе качества.image.JPEG_SUBSAMPLING_444: использовать субдискретизацию 4:4:4.image.JPEG_SUBSAMPLING_422: использовать субдискретизацию 4:2:2.image.JPEG_SUBSAMPLING_420: использовать субдискретизацию 4:2:0.
Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- to_png(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Преобразует изображение в изображение PNG.
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- compress(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image¶
Преобразует изображение в изображение JPEG.
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.qualityуправляет качеством сжатия изображения jpeg. Значение может быть от 0 до 100.subsamplingможет быть:image.JPEG_SUBSAMPLING_AUTO: использовать наилучшую субдискретизацию для изображения на основе качества.image.JPEG_SUBSAMPLING_444: использовать субдискретизацию 4:4:4.image.JPEG_SUBSAMPLING_422: использовать субдискретизацию 4:2:2.image.JPEG_SUBSAMPLING_420: использовать субдискретизацию 4:2:0.
Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Примечание
Image.compressявляется псевдонимом дляImage.to_jpeg.
- copy(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy_to_fb: bool = False) Image¶
Создаёт глубокую копию объекта изображения.
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- crop(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Изменяет изображение на месте без изменения базового типа изображения.
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- scale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Изменяет изображение на месте без изменения базового типа изображения.
x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (за исключениемimage.BLACK_BACKGROUND, который здесь не поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.copyесли True, создаёт глубокую копию преобразованного изображения в куче вместо преобразования исходного изображения на месте.copy_to_fbесли True, изображение загружается непосредственно в буфер кадра.copy_to_fbимеет приоритет надcopy. Это не имеет особого эффекта, если изображение уже находится в буфере кадра.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Примечание
Image.scaleявляется псевдонимом дляImage.crop.
- save(path: str, roi: Tuple[int, int, int, int] | None = None, quality: int = 50) Image¶
Сохраняет копию изображения в файловой системе по пути
path.Поддерживает файлы изображений bmp/pgm/ppm/jpg/jpeg. Обратите внимание, что вы не можете сохранить сжатые jpeg-изображения в несжатый формат.
roi– это прямоугольник области интереса (x, y, w, h) для сохранения. Если не указан, он равен прямоугольнику изображения, что копирует всё изображение. Этот аргумент неприменим для изображений JPEG.quality– это качество сжатия jpeg, используемое для сохранения изображения в формате jpeg, если изображение ещё не сжато (0-100) (int).Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
Методы рисования¶
- clear(mask: Image | None = None) Image¶
Устанавливает все пиксели изображения в ноль (очень быстро).
mask– это другое изображение, используемое в качестве маски на уровне пикселей для операции. Маска должна быть изображением только с чёрными или белыми пикселями и должна быть того же размера, что и обрабатываемое изображение. Изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений.
- draw_line(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image¶
Рисует линию от (x0, y0) до (x1, y1) на изображении. Вы можете передать x0, y0, x1, y1 по отдельности или в виде кортежа (x0, y0, x1, y1).
color– это кортеж RGB888 для изображений Grayscale или RGB565. По умолчанию белый. Однако вы также можете передать базовое значение пикселя (0-255) для изображений в оттенках серого или значение RGB565 для изображений RGB565.thicknessуправляет толщиной линии в пикселях.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- draw_rectangle(x: int, y: int, w: int, h: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image¶
Рисует прямоугольник на изображении. Вы можете передать x, y, w, h по отдельности или в виде кортежа (x, y, w, h).
color– это кортеж RGB888 для изображений Grayscale или RGB565. По умолчанию белый. Однако вы также можете передать базовое значение пикселя (0-255) для изображений в оттенках серого или значение RGB565 для изображений RGB565.thicknessуправляет толщиной линий в пикселях.Передайте
fillравным True, чтобы заполнить прямоугольник.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- draw_circle(x: int, y: int, radius: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image¶
Рисует окружность на изображении. Вы можете передать x, y, radius по отдельности или в виде кортежа (x, y, radius).
color– это кортеж RGB888 для изображений Grayscale или RGB565. По умолчанию белый. Однако вы также можете передать базовое значение пикселя (0-255) для изображений в оттенках серого или значение RGB565 для изображений RGB565.thicknessуправляет толщиной краёв в пикселях.Передайте
fillравным True, чтобы заполнить окружность.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- draw_ellipse(cx: int, cy: int, rx: int, ry: int, rotation: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image¶
Рисует эллипс на изображении. Вы можете передать cx, cy, rx, ry и поворот (в градусах) по отдельности или в виде кортежа (cx, yc, rx, ry, rotation).
color– это кортеж RGB888 для изображений Grayscale или RGB565. По умолчанию белый. Однако вы также можете передать базовое значение пикселя (0-255) для изображений в оттенках серого или значение RGB565 для изображений RGB565.thicknessуправляет толщиной краёв в пикселях.Передайте
fillравным True, чтобы заполнить эллипс.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- draw_string(x: int, y: int, text: str, color: int | Tuple[int, int, int] | None = None, scale: float = 1, x_spacing: int = 0, y_spacing: int = 0, mono_space: bool = True, char_rotation: int = 0, char_hmirror: bool = False, char_vflip: bool = False, string_rotation: int = 0, string_hmirror: bool = False, string_vflip: bool = False) Image¶
Рисует текст 8x10, начиная с позиции (x, y) на изображении. Вы можете передать x, y по отдельности или в виде кортежа (x, y).
text– это строка для записи на изображение. Окончания строк\n,\rи\r\nперемещают курсор на следующую строку.color– это кортеж RGB888 для изображений Grayscale или RGB565. По умолчанию белый. Однако вы также можете передать базовое значение пикселя (0-255) для изображений в оттенках серого или значение RGB565 для изображений RGB565.scaleможет быть увеличен, чтобы увеличить/уменьшить размер текста на изображении. Вы можете передавать целочисленные значения больше 0 или значения с плавающей точкой.x_spacingпозволяет добавить (если положительное) или вычесть (если отрицательное) x пикселей между символами.y_spacingпозволяет добавить (если положительное) или вычесть (если отрицательное) y пикселей между символами (для многострочного текста).mono_spaceпо умолчанию True, что заставляет текст иметь фиксированное расстояние между символами. Для крупных масштабов текста это выглядит ужасно. Установите False, чтобы получить нефиксированное расстояние между символами, что выглядит ГОРАЗДО лучше.char_rotationможет быть 0, 90, 180, 270 для поворота каждого символа в строке на эту величину.char_hmirrorесли True, горизонтально отражает все символы в строке.char_vflipесли True, вертикально переворачивает все символы в строке.string_rotationможет быть 0, 90, 180, 270 для поворота строки на эту величину.string_hmirrorесли True, горизонтально отражает строку.string_vflipесли True, вертикально переворачивает строку.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- draw_cross(x: int, y: int, color: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1) Image¶
Рисует крест в позиции x, y. Вы можете передать x, y по отдельности или в виде кортежа (x, y).
color– это кортеж RGB888 для изображений Grayscale или RGB565. По умолчанию белый. Однако вы также можете передать базовое значение пикселя (0-255) для изображений в оттенках серого или значение RGB565 для изображений RGB565.sizeуправляет длиной линий креста.thicknessуправляет толщиной краёв в пикселях.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- draw_arrow(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image¶
Рисует стрелку от (x0, y0) до (x1, y1) на изображении. Вы можете передать x0, y0, x1, y1 по отдельности или в виде кортежа (x0, y0, x1, y1).
color– это кортеж RGB888 для изображений Grayscale или RGB565. По умолчанию белый. Однако вы также можете передать базовое значение пикселя (0-255) для изображений в оттенках серого или значение RGB565 для изображений RGB565.thicknessуправляет толщиной линии в пикселях.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- draw_detection(detection: Tuple[int, int, int, int, int, int], color1: int | Tuple[int, int, int] | None = None, color2: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1, fill: bool = False, label: str | None = None, label_offset: Tuple[int, int] | None = None) Image¶
Рисует результат обнаружения на изображении.
detection– это 6-элементный кортеж(rx, ry, rw, rh, cx, cy), описывающий ограничивающий прямоугольник и центроид (обычно возвращается кодом NN или цветового отслеживания).color1– цвет прямоугольника, аcolor2– цвет креста центроида.size– размер креста центроида,thicknessуправляет шириной контура, аfillзаполняет прямоугольник.labelесли задан, рисуется рядом с прямоугольником со смещениемlabel_offset(x, y).Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- draw_edges(corners: List[Tuple[int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 0, thickness: int = 1, fill: bool = False) Image¶
Рисует линии-границы между точками списка углов, возвращаемого методами вроде
blob.corners. Углы – это кортеж из четырёх значений, каждое из которых является кортежем из двух значений x/y. Например, [(x1,y1),(x2,y2),(x3,y3),(x4,y4)].color– это кортеж RGB888 для изображений Grayscale или RGB565. По умолчанию белый. Однако вы также можете передать базовое значение пикселя (0-255) для изображений в оттенках серого или значение RGB565 для изображений RGB565.sizeесли больше 0, заставляет углы рисоваться в виде окружностей радиусомsize.thicknessуправляет толщиной линии в пикселях.Передайте
fillравным True, чтобы заполнить окружности углов, если они рисуются.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- draw_image(image: Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, mask: Image | None = None) Image¶
Рисует изображение
image, левый верхний угол которого начинается в позиции x, y. Вы можете передать x, y по отдельности или в виде кортежа (x, y). Этот метод автоматически обрабатывает отрисовку переданного изображения в правильном формате пикселей для изображения назначения, а также бесшовно обрабатывает обрезку.Вы также можете передать путь вместо объекта изображения, чтобы этот метод автоматически загрузил изображение с диска и использовал его за один шаг. Например,
draw_image("test.jpg").x_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении x (float). Если это значение отрицательное, изображение будет отражено по горизонтали. Обратите внимание, что еслиy_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.y_scaleуправляет тем, насколько отображаемое изображение масштабируется в направлении y (float). Если это значение отрицательное, изображение будет перевёрнуто по вертикали. Обратите внимание, что еслиx_scaleне указан, он будет соответствоватьx_scaleдля сохранения соотношения сторон.roi– это кортеж прямоугольника области интереса (x, y, w, h) исходного изображения для рисования. Это позволяет извлечь только пиксели в ROI для масштабирования и рисования на изображении назначения.rgb_channel– это RGB-канал (0=R, G=1, B=2) для извлечения из изображения RGB565 (если передано) и отрисовки на изображении назначения. Например, если вы передадитеrgb_channel=1, это извлечёт зелёный канал исходного изображения RGB565 и нарисует его в оттенках серого на изображении назначения.alphaуправляет тем, какая часть исходного изображения смешивается с изображением назначения. Значение 255 рисует непрозрачное исходное изображение, а значение ниже 255 создаёт смешение между исходным изображением и изображением назначения. 0 приводит к отсутствию изменений изображения назначения.color_paletteесли неNone, может быть перечислением цветовой палитры или изображением RGB565 размером 256 пикселей в общей сложности для использования в качестве таблицы поиска цвета по значению оттенка серого исходного изображения. Применяется после извлеченияrgb_channel, если оно используется.alpha_paletteесли неNone, может быть изображением GRAYSCALE размером 256 пикселей в общей сложности для использования в качестве альфа-палитры, которая модулирует значениеalphaрисуемого исходного изображения на уровне отдельных пикселей, позволяя точно управлять альфа-значением пикселей на основе их значения оттенка серого. Значение пикселя 255 в альфа-таблице поиска непрозрачно, а всё, что меньше 255, становится более прозрачным вплоть до 0. Применяется после извлеченияrgb_channel, если оно используется.hint– это логическое ИЛИ флагов, перечисленных в Флаги-подсказки (включаяimage.BLACK_BACKGROUND, который здесь поддерживается).transform– этоndarray3x3, который используется для выполнения перспективного преобразования изображения. В настоящее время поддерживается только на OpenMV Cam N6, так как у неё есть GPU, способный делать это аппаратно.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..
- draw_keypoints(keypoints: kp_desc | List[Tuple[int, int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 10, thickness: int = 1, fill: bool = False) Image¶
Рисует ключевые точки объекта keypoints на изображении. Вы также можете передать список кортежей из трёх значений, содержащих (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. Перепутанные значения min/max исправляются автоматически; отсутствующие компоненты по умолчанию принимают максимальный диапазон.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¶
Выполняет логическое И этого изображения с другим изображением.
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- b_nand(image: Image, mask: Image | None = None) Image¶
Выполняет логическое И-НЕ этого изображения с другим изображением.
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- b_or(image: Image, mask: Image | None = None) Image¶
Выполняет логическое ИЛИ этого изображения с другим изображением.
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- b_nor(image: Image, mask: Image | None = None) Image¶
Выполняет логическое ИЛИ-НЕ этого изображения с другим изображением.
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- b_xor(image: Image, mask: Image | None = None) Image¶
Выполняет логическое исключающее ИЛИ этого изображения с другим изображением.
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- b_xnor(image: Image, mask: Image | None = None) Image¶
Выполняет логическое исключающее ИЛИ-НЕ этого изображения с другим изображением.
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
Методы ISP¶
- awb(max: bool = False) Image¶
Выполняет автоматический баланс белого на изображении, используя алгоритм gray-world. Работает с изображениями RAW Bayer или RGB565. Не влияет на бинарные изображения / изображения в оттенках серого.
maxесли True, вместо этого использует алгоритм white-patch.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений yuv.
- ccm(matrix: List[List[float]]) Image¶
Умножает переданную матрицу цветокоррекции с плавающей точкой на изображение. Матрицы могут быть 3x3 или 3x4 (со столбцом смещения), во вложенном списке или плоском списке:
[[rr, rg, rb], [gr, gg, gb], [br, bg, bb]] [[rr, rg, rb, ro], [gr, gg, gb, go], [br, bg, bb, bo]] [rr, rg, rb, ro, gr, gg, gb, go, br, bg, bb, bo]
Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer/yuv.
- gamma(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image¶
Регулирует гамму, контраст и яркость изображения.
gammaприменяетpow(pixel, 1/gamma)после нормализации. Значения больше 1.0 осветляют; меньше 1.0 затемняют.contrastприменяетpixel * contrastпосле нормализации.brightnessприменяетpixel + brightnessпосле нормализации.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer/yuv.
Математические методы¶
- negate() Image¶
Псевдоним для
Image.invert.
- replace(image: Image | None = None, **kwargs) Image¶
Псевдоним для
Image.draw_image(). Заменяет это изображение наimage(или преобразует это изображение на месте, еслиimageопущен), используя стандартные именованные аргументыdraw_image. Аргументtransform– этоndarray3x3, описывающий перспективное преобразование (поддерживается только на камерах OpenMV с включённым ULAB).
- assign(image: Image | None = None, **kwargs) Image¶
Псевдоним для
Image.replace().
- set(image: Image | None = None, **kwargs) Image¶
Псевдоним для
Image.replace().
- add(image: Image, mask: Image | None = None) Image¶
Добавляет изображение к этому попиксельно.
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- sub(image: Image, mask: Image | None = None) Image¶
Вычитает
imageпопиксельно из этого изображения (self - image).imageможет быть либо объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm), либо скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Этот метод также принимает полный набор именованных аргументов
Image.draw_image()(x,y,x_scale,y_scale,roi,rgb_channel,alpha,color_palette,alpha_palette,hint,transform).Не поддерживается для сжатых изображений или изображений bayer.
- rsub(image: Image, mask: Image | None = None) Image¶
Обратное вычитание: заменяет это изображение на
image - selfпопиксельно. В остальном идентичноImage.sub().
- min(image: Image, mask: Image | None = None) Image¶
Возвращает попиксельно минимальное изображение из двух изображений.
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- max(image: Image, mask: Image | None = None) Image¶
Возвращает попиксельно максимальное изображение из двух изображений.
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- difference(image: Image, mask: Image | None = None) Image¶
Возвращает изображение абсолютной разности между двумя изображениями (например, ||a-b||).
imageможет быть объектом изображения, путём к несжатому файлу изображения (bmp/pgm/ppm) или скалярным значением (кортеж RGB888 или базовое значение пикселя).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
- blend(image: Image, x: int = 0, y: int = 0, alpha: int = 128, mask: Image | None = None, **kwargs) Image¶
Псевдоним для
Image.draw_image(). Выполняет альфа-смешениеimageс этим изображением.alpha– это целое число 0-256; значения ближе к 256 отдают предпочтение исходному изображению. Принимает все именованные аргументыImage.draw_image().
- histeq(adaptive: bool = False, clip_limit: float = -1, mask: Image | None = None) Image¶
Выполняет выравнивание гистограммы на изображении для нормализации контраста и яркости.
adaptiveесли True, выполняет адаптивное выравнивание гистограммы (медленнее, но обычно лучше).clip_limitограничивает контраст в адаптивном варианте (небольшое значение вроде 10 даёт хорошие результаты CLAHE).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer.
Методы фильтрации¶
- erode(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Удаляет пиксели с краёв сегментированных областей. Свёртывает ядро
((size*2)+1)x((size*2)+1)по изображению, очищая центральный пиксель, если болееthresholdсоседей очищены (действует как стандартная эрозия, еслиthresholdравно None).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer/yuv.
- dilate(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Добавляет пиксели к краям сегментированных областей. Свёртывает ядро
((size*2)+1)x((size*2)+1)по изображению, устанавливая центральный пиксель, если болееthresholdсоседей установлены (действует как стандартная дилатация, еслиthresholdравно None).mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer/yuv.
- open(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Выполняет эрозию, затем дилатацию. См.
Image.erode()иImage.dilate().mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Не поддерживается для сжатых изображений или изображений bayer/yuv.
- close(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Выполняет дилатацию, затем эрозию. См.
Image.dilate()иImage.erode().mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Не поддерживается для сжатых изображений или изображений bayer/yuv.
- top_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Возвращает разность изображения и изображения после
Image.open().mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Не поддерживается для сжатых изображений или изображений bayer/yuv.
- black_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Возвращает разность изображения и изображения после
Image.close().mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Не поддерживается для сжатых изображений или изображений bayer/yuv.
- mean(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Стандартный фильтр усреднения с использованием блочного фильтра.
size– это размер ядра. Используйте 1 (ядро 3x3), 2 (ядро 5x5) и т.д.thresholdесли True, адаптивно применяет пороговое разделение к выходу фильтра для получения бинарного изображения.offsetсдвигает бинаризацию (отрицательное делает больше пикселей белыми, положительное делает меньше).invertинвертирует бинарный выход.mask– это бинарное изображение, используемое в качестве маски на уровне пикселей; изменяются только пиксели, установленные в маске.Возвращает объект изображения, чтобы вы могли вызвать другой метод, используя нотацию
..Не поддерживается для сжатых изображений или изображений bayer/yuv.
- median(size: int, percentile: float | None = 0.5, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Выполняет процентильный фильтр на изображении (по умолчанию медианный).
size– это размер ядра. Используйте 1 (ядро 3x3), 2 (ядро 5x5) и т.д.percentile– это процентиль для выбора из каждого ядра (0 = min, 0.5 = медиана, 1.0 = max). По умолчанию 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¶
Выполняет фильтр среднего значения (midpoint) на изображении. Этот фильтр находит среднюю точку ((max-min)/2) каждой окрестности пикселя в изображении.
size– это размер ядра. Используйте 1 (ядро 3x3), 2 (ядро 5x5) и т.д.biasуправляет смешением min/max. 0 для фильтрации только по min, 1.0 для фильтрации только по max. Используяbias, вы можете применять min/max-фильтрацию к изображению.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(grayscale) или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¶
Вычисляет среднее, медиану, моду, стандартное отклонение, min, max, нижний квартиль и верхний квартиль для всех цветовых каналов для
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(grayscale) или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¶
Вычисляет линейную регрессию (Theil-Sen) по всем пикселям изображения, прошедшим пороговое разделение. Возвращает объект
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 кортежей. Перепутанные значения min/max исправляются автоматически; отсутствующие компоненты по умолчанию принимают максимальный диапазон.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– это максимальная разница theta в градусах между сегментами для их объединения.Этот метод недоступен на 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]¶
Находит все qrcode в пределах
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]¶
Находит все datamatrix в пределах
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]¶
Находит все 1D-штрихкоды в пределах
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– это объект Haar 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 (local-binary-patterns) из области интереса. Используйте
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 (histogram of orientated gradients).
roi– это кортеж прямоугольника области интереса (x, y, w, h). Если не указан, он равен прямоугольнику изображения. Операции выполняются только над пикселями в пределахroi.Работает только с изображениями в оттенках серого.
Этот метод недоступен на OpenMV Cam M4.
- stereo_disparity(reversed: bool = False, max_disparity: int = 64, threshold: int = 64) Image¶
Принимает изображение двойной ширины в оттенках серого, содержащее вывод двух расположенных рядом датчиков камеры, и заменяет одну половину изображением стереодиспаратности (каждый пиксель представляет глубину). Например, для двух камер 320x240 передайте изображение 640x240.
reversedПо умолчанию левое изображение сравнивается с правым, и правое изображение заменяется. Установите True, чтобы сравнивать справа->налево и заменять левое изображение.max_disparity– это максимальное расстояние (1-255) для поиска совпадающего блока пикселей с использованием суммы абсолютных разностей. Большие значения занимают экспоненциально больше времени, но дают более качественный вывод.thresholdесли сумма абсолютных разностей между двумя блоками меньше или равна этому порогу, они считаются совпадающими.
- selective_search(threshold: int = 500, size: int = 20, a1: float = 1.0, a2: float = 1.0, a3: float = 1.0) List[Tuple[int, int, int, int]]¶
Выполняет выборочный поиск на изображении и возвращает список кортежей ограничивающих рамок (x, y, w, h) предложений объектов.
threshold– это порог сегментации; более высокие значения дают меньше/больше областей.size– это минимальный размер области после объединения.a1,a2,a3– это веса сходства цвета/текстуры/размера, используемые при объединении областей.