csi — датчики камери

Модуль csi — це сучасний об’єктно-орієнтований інтерфейс до датчика (датчиків) камери на OpenMV Cam. Кожен фізичний датчик представлений екземпляром CSI, тому мультиспектральні плати зображення, що поєднують кольоровий датчик із тепловим або подієвим датчиком, можуть керувати кожним незалежно, передаючи різний cid конструктору. Камери з одним датчиком просто створюють один екземпляр CSI.

Об’єкт CSI містить повну конфігурацію датчика — формат пікселів, розмір кадру/вікно, витримку/підсилення/баланс білого, апаратне дзеркалювання та перевертання, кольорову тест-смугу, тактову частоту кадрів, область інтересу (ROI) для автовитримки та специфічні для чіпа команди ioctl. Кадри знімаються за допомогою CSI.snapshot(), який повертає image.Image, підкріплений кадровим буфером.

Цей модуль замінює застарілий модуль sensor (який надавав ту саму функціональність як функції рівня модуля, прив’язані до одного прихованого датчика). У новому коді слід використовувати CSI.

Приклад використання:

import csi

# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000)  # skip frames

# Take pictures.
while(True):
    csi0.snapshot()

Використання з asyncio

Блокуючий цикл CSI.snapshot() вище не співпрацює з циклом подій asyncio — поки snapshot очікує наступний кадр, усі інші корутини програми заморожені. Щоб цикл захоплення міг співіснувати з іншими паралельними завданнями (UART-клієнт, відстежувач кнопок, мережеве завдання), оберніть CSI у невеликий адаптер, який перетворює snapshot на корутину, сумісну з await, шляхом опитування snapshot(blocking=False) і передачі керування циклу подій між перевірками:

import asyncio
import csi


class AsyncCSI:
    def __init__(self, *args, **kwargs):
        self._csi = csi.CSI(*args, **kwargs)

    def __getattr__(self, name):
        return getattr(self._csi, name)

    async def snapshot(self):
        while True:
            img = self._csi.snapshot(blocking=False)
            if img is not None:
                return img
            await asyncio.sleep_ms(0)

__getattr__ пересилає кожен інший атрибут (reset, pixformat, framesize, регулятори датчика) до базового CSI, тому обгортка є повноцінною заміною. Перший неблокуючий виклик також запускає DMA-захоплення камери, якщо воно ще не було запущено, тому додаткова ініціалізація не потрібна.

Цикл захоплення тоді вписується у більшу програму asyncio як ще одна корутина:

async def capture_loop(cam):
    while True:
        img = await cam.snapshot()
        # process img here

async def main():
    cam = AsyncCSI()
    cam.reset()
    cam.pixformat(csi.RGB565)
    cam.framesize(csi.QVGA)

    asyncio.create_task(some_other_task())
    await capture_loop(cam)

asyncio.run(main())

Параметр framebuffers все ще важливий у цьому контексті — режим одного буфера змушує snapshot(blocking=False) повертати None до захоплення наступного кадру, тоді як подвійне або потрійне буферування згладжує це так, що обгортка зазвичай знаходить буферизований кадр при першому опитуванні. Дивіться розділ AsyncCSI у посібнику asyncio для повного опису.

class CSI – Інтерфейс датчика камери

Клас CSI використовується для керування датчиком камери.

class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)

Створює об’єкт для роботи з датчиком камери. На платах із кількома датчиками конкретний об’єкт CSI можна вибрати, передавши cid на зразок csi.LEPTON для вибору модуля датчика FLIR Lepton. Якщо cid дорівнює -1, вибирається основний датчик (зазвичай кольоровий модуль камери на платах із кількома датчиками).

Якщо delays має значення False, усі затримки часу стабілізації в драйвері csi вимкнено. За замовчуванням драйвер датчика затримується після скидання/зміни режиму, щоб запобігти поверненню пошкоджених кадрів через CSI.snapshot. Вимкнення затримок дозволяє пакетувати оновлення та застосувати одну затримку наприкінці перед викликом CSI.snapshot.

Якщо fflush має значення False, автоматичне очищення кадрового буфера, згадане в CSI.framebuffers, вимкнено. Це знімає будь-яке обмеження часу для кадрів у FIFO кадрового буфера.

stream визначає, чи є цей CSI джерелом потоку, що надсилається до IDE. Якщо None (за замовчуванням), CSI стає джерелом потоку лише якщо він є основним (не допоміжним) датчиком. Передайте True, щоб примусово зробити цей CSI джерелом потоку, або будь-яке хибне значення, щоб залишити існуюче джерело потоку незмінним.

Методи

reset(hard: bool = True) None

Ініціалізує датчик камери. Виконує апаратне скидання шляхом перемикання GPIO сигналу RESET до модуля камери, якщо hard має значення True. hard слід встановлювати в false при скиданні допоміжних датчиків камери, які спільно використовують той самий GPIO сигналу RESET з основним модулем.

shutdown(enable: bool) None

Переводить камеру в режим нижчого енергоспоживання, ніж сон (але камеру необхідно скинути після пробудження).

sleep(enable: bool) None

Переводить камеру у сплячий режим, якщо enable має значення True. В іншому випадку виводить її зі сплячого режиму.

flush() None

Копіює вміст поточного кадрового буфера до попереднього перегляду в IDE. Викликайте це після останнього CSI.snapshot, якщо скрипт завершується, щоб IDE показував останній кадр.

snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None

Робить знімок за допомогою камери та повертає об’єкт image.Image.

Якщо передано time та/або frames, snapshot буде блокуватися на вказану кількість мілісекунд time та/або frames кадрів, захоплених з камери. Обидва аргументи можна використовувати одночасно. Після завершення time та/або frames snapshot поверне None.

blocking може мати значення False для увімкнення неблокуючої поведінки, при якій snapshot повертатиме None, коли наступне зображення з камери ще не готове, замість очікування.

image може бути іншим об’єктом image.Image для оновлення новим зображенням, захопленим з камери, замість повернення нового об’єкта image.Image. Попередній вміст зображення перезаписується за допомогою глибокого копіювання.

Якщо CSI.auto_rotation увімкнено, цей метод поверне вже повернуте image.Image.

width() int

Повертає ширину роздільної здатності датчика.

height() int

Повертає висоту роздільної здатності датчика.

cid() int

Повертає ідентифікатор чіпа модуля камери. Порівнюйте з будь-яким із: csi.OV2640, csi.OV5640, csi.OV7670, csi.OV7690, csi.OV7725, csi.OV9650, csi.MT9V022, csi.MT9V024, csi.MT9V032, csi.MT9V034, csi.MT9M114, csi.BOSON320, csi.BOSON640, csi.LEPTON, csi.HM01B0, csi.HM0360, csi.GC2145, csi.GENX320ES, csi.GENX320, csi.PAG7920, csi.PAG7936, csi.PAJ6100, csi.FROGEYE2020 або csi.SOFTCSI.

readable() bool

Повертає True, якщо є зображення, готове до повернення через CSI.snapshot, тобто виклик snapshot не буде блокуватися.

pixformat(pixformat: int | None = None) int | None

Встановлює формат пікселів для модуля камери на одне з: csi.GRAYSCALE, csi.RGB565, csi.BAYER, csi.YUV422 або csi.JPEG (лише для OV2640/OV5640).

Повертає поточний pixformat, якщо викликано без аргументів.

framesize(framesize: int | Tuple[int, int] | None = None) int | None

Встановлює розмір кадру для модуля камери на одну з констант розміру (наприклад, csi.QVGA, csi.VGA, csi.HD тощо — дивіться розділ констант).

Альтернативно, можна передати користувацький розмір кадру як кортеж (w, h). При виклику CSI.snapshot користувацький розмір кадру буде перевірено на відповідність правилам DMA. Зазвичай розміри кадрів мають бути кратними 8 пікселям та/або 16 байтам.

Повертає поточний framesize, якщо викликано без аргументів.

framerate(rate: int | None = None) int | None

Встановлює частоту кадрів у Гц для модуля камери.

Повертає поточну частоту кадрів, якщо викликано без аргументів.

Примітка

CSI.framerate працює шляхом пропуску кадрів, отриманих від модуля камери, щоб підтримувати частоту кадрів на рівні або нижче вказаного значення. За замовчуванням камера працює на максимальній частоті кадрів. Якщо реалізовано для конкретного датчика камери, CSI.framerate також зменшить внутрішню частоту кадрів датчика камери для економії енергії та покращення якості зображення шляхом збільшення витримки датчика. CSI.framerate може конфліктувати з CSI.auto_exposure на деяких камерах.

window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None

Встановлює роздільну здатність камери на підобласть поточної роздільної здатності. roi — це кортеж (x, y, w, h). Також можна передати (w, h), і вікно буде відцентровано.

Повертає поточний кортеж (x, y, w, h), якщо викликано без аргументів.

gainceiling(gainceiling: int) bool

Встановлює стелю підсилення зображення камери на одне зі значень: 2, 4, 8, 16, 32, 64 або 128.

Повертає True у разі успіху та False у разі невдачі.

brightness(brightness: int) bool

Встановлює яскравість зображення камери.

Повертає True у разі успіху та False у разі невдачі.

contrast(contrast: int) bool

Встановлює контрастність зображення камери.

Повертає True у разі успіху та False у разі невдачі.

saturation(saturation: int) bool

Встановлює насиченість зображення камери.

Повертає True у разі успіху та False у разі невдачі.

quality(quality: int) bool

Встановлює якість JPEG-стиснення зображення камери. Від 0 до 100.

Повертає True у разі успіху та False у разі невдачі.

Примітка

Лише для камер OV2640/OV5640.

colorbar(enable: bool) bool

Вмикає (True) або вимикає (False) режим кольорових смуг. За замовчуванням вимкнено.

Повертає True у разі успіху та False у разі невдачі.

auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None

enable вмикає (True) або вимикає (False) автоматичне керування підсиленням. Камера запускається з увімкненим автоматичним керуванням підсиленням.

Якщо enable має значення False, можна встановити фіксоване підсилення в децибелах за допомогою gain_db.

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

Примітка

Щоб відстежувати кольори, також потрібно вимкнути баланс білого.

gain_db() float

Повертає поточне значення підсилення камери в децибелах.

auto_exposure(enable: bool, exposure_us: int = -1) None

enable вмикає (True) або вимикає (False) автоматичне керування витримкою. Камера запускається з увімкненим автоматичним керуванням витримкою.

Якщо enable має значення False, можна встановити фіксований час витримки в мікросекундах за допомогою exposure_us.

Примітка

Алгоритми автоматичної витримки камери досить консервативні щодо зміни значення витримки і, як правило, уникають значних змін витримки. Натомість вони значно змінюють значення підсилення для адаптації до змін освітлення.

exposure_us() int

Повертає поточне значення витримки камери в мікросекундах.

auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None

enable вмикає (True) або вимикає (False) автоматичний баланс білого. Камера запускається з увімкненим автоматичним балансом білого.

Якщо enable має значення False, можна встановити фіксоване підсилення в децибелах для червоного, зеленого та синього каналів відповідно за допомогою rgb_gain_db.

Примітка

Щоб відстежувати кольори, також потрібно вимкнути керування підсиленням.

rgb_gain_db() Tuple[float, float, float]

Повертає кортеж (r, g, b) поточних значень підсилення червоного, зеленого та синього каналів камери в децибелах.

auto_blc(enable: bool, regs: List[int] | None = None) None

Встановлює автоматичне калібрування чорного рівня (BLC) на камері.

enable передайте True або False для увімкнення або вимкнення BLC. Зазвичай це завжди слід тримати увімкненим.

regs якщо вимкнено, можна вручну встановити значення регістрів BLC з попереднього виклику CSI.blc_regs.

blc_regs() List[int]

Повертає регістри BLC датчика у вигляді списку цілих чисел. Для використання з CSI.auto_blc.

hmirror(enable: bool | None = None) bool | None

Вмикає (True) або вимикає (False) режим горизонтального дзеркалювання. За замовчуванням вимкнено.

Повертає поточне налаштування, якщо викликано без аргументів.

vflip(enable: bool | None = None) bool | None

Вмикає (True) або вимикає (False) режим вертикального перевертання. За замовчуванням вимкнено.

Повертає поточне налаштування, якщо викликано без аргументів.

transpose(enable: bool | None = None) bool | None

Вмикає (True) або вимикає (False) режим транспонування. За замовчуванням вимкнено.

  • vflip=False, hmirror=False, transpose=False -> обертання на 0 градусів

  • vflip=True, hmirror=False, transpose=True -> обертання на 90 градусів

  • vflip=True, hmirror=True, transpose=False -> обертання на 180 градусів

  • vflip=False, hmirror=True, transpose=True -> обертання на 270 градусів

Повертає поточне налаштування, якщо викликано без аргументів.

auto_rotation(enable: bool | None = None) bool | None

Вмикає (True) або вимикає (False) режим автоматичного обертання. За замовчуванням вимкнено.

Повертає поточне налаштування, якщо викликано без аргументів.

Примітка

Цей метод працює лише тоді, коли на OpenMV Cam встановлено та увімкнено imu.

framebuffers(count: int | None = None) int | None

Встановлює кількість кадрових буферів для отримання даних зображення. За замовчуванням OpenMV Cam намагається виділити максимальну кількість кадрових буферів. Перерозподіл відбувається кожного разу, коли викликаються CSI.pixformat, CSI.framesize або CSI.window.

count зі значенням 1 (один буфер), 2 (подвійний буфер) або 3 (потрійний буфер) вибирає відповідний режим захоплення. Передайте 4 або більше, щоб перевести драйвер у режим відео FIFO, де в черзі знаходиться count буферів — корисно для запису відео на SD-карту. При втраті кадру всі кадрові буфери, крім активного, очищаються, тому CSI.snapshot завжди повертає останній кадр.

Повертає поточну кількість, якщо викликано без аргументів.

special_effect(effect: int) bool

Встановлює спеціальний цифровий ефект (одне з csi.NORMAL або csi.NEGATIVE).

Повертає True у разі успіху та False у разі невдачі.

lens_correction(enable: bool, radi: int, coef: int) bool

enable True для увімкнення, False для вимкнення. radi — цілочисельний радіус пікселів для корекції. coef — степінь корекції.

Повертає True у разі успіху та False у разі невдачі.

vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None

Реєструє зворотний виклик cb для виконання (у контексті переривання) кожного разу, коли модуль камери генерує новий кадр (але перед його отриманням).

cb приймає один аргумент і отримує поточний стан виводу vsync після його зміни.

Повертає зареєстрований зворотний виклик, якщо викликано без аргументів. Передайте будь-який неви́кликний об’єкт для очищення зворотного виклику.

frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None

Реєструє зворотний виклик cb для виконання (у контексті переривання) кожного разу, коли модуль камери генерує новий кадр і кадр готовий до читання через CSI.snapshot.

cb не приймає аргументів. Використовуйте це для планування читання кадру пізніше за допомогою micropython.schedule().

Повертає зареєстрований зворотний виклик, якщо викликано без аргументів. Передайте будь-який неви́кликний об’єкт для очищення зворотного виклику.

ioctl(request: int, *args) Any

Виконує запит, специфічний для датчика. request — одна з констант IOCTL_*; решта позиційних аргументів і значення, що повертається, залежать від запиту. Підтримувані запити згруповані за сімейством датчиків нижче.

Загальні (для будь-якого датчика):

ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))

ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))

Встановлює вікно зчитування датчика. Менше вікно підвищує частоту кадрів за рахунок поля зору.

ioctl(IOCTL_GET_READOUT_WINDOW)

Повертає поточне вікно зчитування у вигляді кортежу (x, y, w, h).

ioctl(IOCTL_SET_TRIGGERED_MODE, enable)

Вмикає (True) або вимикає (False) тригерний режим на MT9V034.

ioctl(IOCTL_GET_TRIGGERED_MODE)

Повертає поточний стан тригерного режиму у вигляді bool.

ioctl(IOCTL_SET_FOV_WIDE, enable)

Якщо True, instructs framesize() оптимізувати за полем зору, а не частотою кадрів.

ioctl(IOCTL_GET_FOV_WIDE)

Повертає поточний стан широкого поля зору у вигляді bool.

ioctl(IOCTL_SET_NIGHT_MODE, enable)

Вмикає (True) або вимикає (False) «нічний режим» датчика при слабкому освітленні. Лише для OV7725 та OV5640.

ioctl(IOCTL_GET_NIGHT_MODE)

Повертає поточний стан нічного режиму у вигляді bool.

ioctl(IOCTL_GET_RGB_STATS)

Повертає 4-кортеж необроблених статистичних даних каналів RGB (r, gb, gr, b), зчитаних із датчика (зазвичай використовується для налаштування балансу білого).

OV5640 FPC – автофокус:

ioctl(IOCTL_TRIGGER_AUTO_FOCUS)

Запускає сканування автофокусу на модулі OV5640 FPC.

ioctl(IOCTL_PAUSE_AUTO_FOCUS)

Призупиняє поточне сканування автофокусу.

ioctl(IOCTL_RESET_AUTO_FOCUS)

Скидає позицію автофокусу до значення за замовчуванням.

ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)

ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)

Блокується до завершення поточного сканування автофокусу. timeout_ms за замовчуванням дорівнює 5000, якщо не вказано.

FLIR Lepton:

ioctl(IOCTL_LEPTON_GET_WIDTH)

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

ioctl(IOCTL_LEPTON_GET_HEIGHT)

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

ioctl(IOCTL_LEPTON_GET_RADIOMETRY)

Повертає тип Lepton (радіометричний чи ні) у вигляді цілого числа.

ioctl(IOCTL_LEPTON_GET_REFRESH)

Повертає частоту оновлення Lepton у Гц.

ioctl(IOCTL_LEPTON_GET_RESOLUTION)

Повертає роздільну здатність АЦП Lepton у бітах.

ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)

Виконує команду FLIR Lepton SDK. cmd — 16-бітний ідентифікатор команди, визначений SDK.

ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)

Записує атрибут Lepton SDK. attr_id — 16-бітний ідентифікатор атрибута; payloadbytes/bytearray, довжина якого має бути кратною 16 бітам.

ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)

Читає атрибут Lepton SDK. attr_id — 16-бітний ідентифікатор атрибута; words — кількість 16-бітних слів для читання. Повертає bytearray.

ioctl(IOCTL_LEPTON_GET_FPA_TEMP)

Повертає температуру фокальної площини (FPA) Lepton у градусах Цельсія.

ioctl(IOCTL_LEPTON_GET_AUX_TEMP)

Повертає допоміжну температуру Lepton у градусах Цельсія.

ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)

ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)

Перемикає Lepton між AGC та виведенням прямої температури. measurement_enabled=True вмикає виведення прямої температури. Необов’язковий прапор high_temp_enabled вибирає діапазон високих температур.

ioctl(IOCTL_LEPTON_GET_MODE)

Повертає 2-кортеж (measurement_enabled, high_temp_enabled).

ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))

Встановлює діапазон температур, відображений на 0..255, коли увімкнено режим вимірювання.

ioctl(IOCTL_LEPTON_GET_RANGE)

Повертає поточний діапазон (min_celsius, max_celsius).

Himax HM01B0 – виявлення руху:

ioctl(IOCTL_HIMAX_MD_ENABLE, enable)

Вмикає (True) або вимикає (False) блок виявлення руху на датчику HM01B0.

ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))

ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))

Встановлює вікно виявлення руху на HM01B0.

ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)

Встановлює поріг виявлення руху (від 0 до 255).

ioctl(IOCTL_HIMAX_MD_CLEAR)

Очищає фіксатор переривання виявлення руху.

ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)

Вмикає (True) або вимикає (False) внутрішній генератор HM01B0.

Prophesee GENX320 – подієвий датчик:

ioctl(IOCTL_GENX320_SET_BIASES, preset)

Застосовує пресет зміщень. preset — одна з констант GENX320_BIASES_*.

ioctl(IOCTL_GENX320_SET_BIAS, bias, value)

Встановлює одне зміщення. bias — одна з констант GENX320_BIAS_*; value — ціле число налаштування.

ioctl(IOCTL_GENX320_SET_AFK, enable)

ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)

Налаштовує антибликовий фільтр. enable — булева змінна; необов’язкові аргументи частоти встановлюють смугу пропускання фільтра.

ioctl(IOCTL_GENX320_SET_STC, mode)

ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])

Налаштовує просторово-часовий контрастний фільтр. mode — одна з констант GENX320_STC_*; до двох додаткових аргументів є специфічними для режиму.

ioctl(IOCTL_GENX320_SET_MODE, mode)

ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)

Перемикає датчик між режимами кадру та події. mode — одна з констант GENX320_MODE_*. Для режиму події evt_res — довжина осі рядка буфера подій, переданого до IOCTL_GENX320_READ_EVENTS.

ioctl(IOCTL_GENX320_READ_EVENTS, buf)

Зчитує події в buf, uint16 ndarray форми (EVT_res, 6), де EVT_res є степенем двійки між 1024 і 65536. Стовпці:

  • [0] – тип події (PIX_OFF_EVENT / PIX_ON_EVENT / тригер).

  • [1] – секунди.

  • [2] – мілісекунди.

  • [3] – мікросекунди.

  • [4] – координата x.

  • [5] – координата y.

Повертає кількість записаних подій.

ioctl(IOCTL_GENX320_READ_EVENTS_RAW)

Повертає image.Image, що містить необроблений кадр подій із GENX320.

ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)

Вимикає пікселі, чий шум перевищує sigma стандартних відхилень від нормального розподілу. iterations — ціле число проходів калібрування. Повертає кількість вимкнених пікселів.

color_palette(palette: int | None = None) int | None

Встановлює кольорову палітру для таких операцій, як перетворення відтінків сірого FLIR Lepton у RGB565 або візуалізація подій GENX320. Одне з: image.PALETTE_RAINBOW, image.PALETTE_IRONBOW і (якщо підтримується) image.PALETTE_DEPTH, image.PALETTE_EVT_DARK або image.PALETTE_EVT_LIGHT.

Повертає поточне налаштування, якщо викликано без аргументів.

__write_reg(address: int, value: int) None

Записує value до регістра камери за адресою address.

Примітка

Дивіться технічний паспорт камери для отримання інформації про регістри.

__read_reg(address: int) int

Читає регістр камери за адресою address.

Примітка

Дивіться технічний паспорт камери для отримання інформації про регістри.

Функції

csi.devices() List[int]

Повертає список виявлених ідентифікаторів чіпів датчиків.

Константи

csi.BINARY: int

Формат пікселів BINARY (bitmap). Кожен піксель займає 1 біт. Корисно для зберігання масок; можна використовувати з image.Image().

csi.GRAYSCALE: int

Формат пікселів GRAYSCALE (Y з YUV422). Кожен піксель займає 8 біт.

csi.RGB565: int

Формат пікселів RGB565. Кожен піксель займає 16 біт (5 біт червоного, 6 біт зеленого, 5 біт синього).

csi.BAYER: int

Формат пікселів необробленого зображення RAW BAYER.

csi.YUV422: int

Формат пікселів YUV422. Кожен піксель зберігається як 8-бітне значення яскравості Y, за яким слідують 8-бітні значення кольоровості U/V, що чергуються та спільно використовуються між двома значеннями Y (Y1, U, Y2, V, …). Лише деякі методи обробки зображень працюють із YUV422.

csi.JPEG: int

Режим JPEG. Модуль камери виводить стиснені зображення JPEG. Використовуйте CSI.quality для керування якістю JPEG. Працює лише для камер OV2640/OV5640.

csi.OV2640: int

CSI.cid повертає це для камери OV2640.

csi.OV5640: int

CSI.cid повертає це для камери OV5640.

csi.OV7670: int

CSI.cid повертає це для камери OV7670.

csi.OV7690: int

CSI.cid повертає це для камери OV7690.

csi.OV7725: int

CSI.cid повертає це для камери OV7725.

csi.OV9650: int

CSI.cid повертає це для камери OV9650.

csi.MT9V022: int

CSI.cid повертає це для камери MT9V022.

csi.MT9V024: int

CSI.cid повертає це для камери MT9V024.

csi.MT9V032: int

CSI.cid повертає це для камери MT9V032.

csi.MT9V034: int

CSI.cid повертає це для камери MT9V034.

csi.MT9M114: int

CSI.cid повертає це для камери MT9M114.

csi.BOSON320: int

CSI.cid повертає це для камери BOSON 320x256.

csi.BOSON640: int

CSI.cid повертає це для камери BOSON 640x512.

csi.LEPTON: int

CSI.cid повертає це для камер LEPTON1/2/3.

csi.HM01B0: int

CSI.cid повертає це для камери HM01B0.

csi.HM0360: int

CSI.cid повертає це для камери HM0360.

csi.GC2145: int

CSI.cid повертає це для камери GC2145.

csi.GENX320ES: int

CSI.cid повертає це для камери GENX320 (дослідний зразок).

csi.GENX320: int

CSI.cid повертає це для камери GENX320.

csi.PAG7920: int

CSI.cid повертає це для камери PAG7920.

csi.PAG7936: int

CSI.cid повертає це для камери PAG7936.

csi.PAJ6100: int

CSI.cid повертає це для камери PAJ6100.

csi.FROGEYE2020: int

CSI.cid повертає це для камери FROGEYE2020.

csi.SOFTCSI: int

CSI.cid повертає це для програмної камери CSI.

csi.NORMAL: int

Нормальний режим для CSI.special_effect.

csi.NEGATIVE: int

Негативний режим для CSI.special_effect.

csi.QCIF: int

Роздільна здатність 176x144 для датчика камери.

csi.CIF: int

Роздільна здатність 352x288 для датчика камери.

csi.QSIF: int

Роздільна здатність 176x120 для датчика камери.

csi.SIF: int

Роздільна здатність 352x240 для датчика камери.

csi.QQQVGA: int

Роздільна здатність 80x60 для датчика камери.

csi.QQVGA: int

Роздільна здатність 160x120 для датчика камери.

csi.QVGA: int

Роздільна здатність 320x240 для датчика камери.

csi.VGA: int

Роздільна здатність 640x480 для датчика камери.

csi.HQVGA: int

Роздільна здатність 240x160 для датчика камери.

csi.HVGA: int

Роздільна здатність 480x320 для датчика камери.

csi.WVGA: int

Роздільна здатність 720x480 для датчика камери MT9V034.

csi.WVGA2: int

Роздільна здатність 752x480 для датчика камери MT9V034.

csi.SVGA: int

Роздільна здатність 800x600 для датчика камери.

csi.XGA: int

Роздільна здатність 1024x768 для датчика камери.

csi.WXGA: int

Роздільна здатність 1280x768 для датчика камери MT9M114.

csi.SXGA: int

Роздільна здатність 1280x1024 для датчика камери. Працює лише для камер OV2640/OV5640.

csi.SXGAM: int

Роздільна здатність 1280x960 для датчика камери MT9M114.

csi.UXGA: int

Роздільна здатність 1600x1200 для датчика камери. Працює лише для камер OV2640/OV5640.

csi.HD: int

Роздільна здатність 1280x720 для датчика камери.

csi.FHD: int

Роздільна здатність 1920x1080 для датчика камери. Працює лише для камери OV5640.

csi.QHD: int

Роздільна здатність 2560x1440 для датчика камери. Працює лише для камери OV5640.

csi.QXGA: int

Роздільна здатність 2048x1536 для датчика камери. Працює лише для камери OV5640.

csi.WQXGA: int

Роздільна здатність 2560x1600 для датчика камери. Працює лише для камери OV5640.

csi.WQXGA2: int

Роздільна здатність 2592x1944 для датчика камери. Працює лише для камери OV5640.

csi.IOCTL_SET_READOUT_WINDOW: int

Встановлює вікно зчитування. Дивіться CSI.ioctl.

csi.IOCTL_GET_READOUT_WINDOW: int

Отримує вікно зчитування. Дивіться CSI.ioctl.

csi.IOCTL_SET_TRIGGERED_MODE: int

Встановлює тригерний режим для MT9V034. Дивіться CSI.ioctl.

csi.IOCTL_GET_TRIGGERED_MODE: int

Отримує стан тригерного режиму для MT9V034. Дивіться CSI.ioctl.

csi.IOCTL_SET_FOV_WIDE: int

Дозволяє CSI.framesize оптимізувати поле зору порівняно з FPS. Дивіться CSI.ioctl.

csi.IOCTL_GET_FOV_WIDE: int

Повертає, чи оптимізує CSI.framesize поле зору порівняно з FPS. Дивіться CSI.ioctl.

csi.IOCTL_TRIGGER_AUTO_FOCUS: int

Запускає автофокус на модулі камери OV5640 FPC. Дивіться CSI.ioctl.

csi.IOCTL_PAUSE_AUTO_FOCUS: int

Призупиняє автофокус (під час роботи) для модуля камери OV5640 FPC. Дивіться CSI.ioctl.

csi.IOCTL_RESET_AUTO_FOCUS: int

Скидає автофокус до значення за замовчуванням для модуля камери OV5640 FPC. Дивіться CSI.ioctl.

csi.IOCTL_WAIT_ON_AUTO_FOCUS: int

Очікує завершення автофокусу на модулі камери OV5640 FPC. Дивіться CSI.ioctl.

csi.IOCTL_SET_NIGHT_MODE: int

Вмикає або вимикає нічний режим. Знижує частоту кадрів для динамічного збільшення витримки. Дивіться CSI.ioctl.

csi.IOCTL_GET_NIGHT_MODE: int

Повертає, чи увімкнено нічний режим. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_WIDTH: int

Повертає ширину роздільної здатності зображення FLIR Lepton у пікселях. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_HEIGHT: int

Повертає висоту роздільної здатності зображення FLIR Lepton у пікселях. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_RADIOMETRY: int

Повертає тип FLIR Lepton (радіометричний чи ні). Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_REFRESH: int

Повертає частоту оновлення FLIR Lepton у Гц. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_RESOLUTION: int

Повертає роздільну здатність АЦП FLIR Lepton у бітах. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_RUN_COMMAND: int

Виконує 16-бітну команду FLIR Lepton SDK. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_SET_ATTRIBUTE: int

Встановлює атрибут FLIR Lepton із FLIR Lepton SDK. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_ATTRIBUTE: int

Отримує атрибут FLIR Lepton із FLIR Lepton SDK. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_FPA_TEMP: int

Отримує температуру FPA FLIR Lepton у градусах Цельсія. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_AUX_TEMP: int

Отримує допоміжну температуру AUX FLIR Lepton у градусах Цельсія. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_SET_MODE: int

Переводить драйвер FLIR Lepton у режим, де кожен піксель є значенням температури. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_MODE: int

Повертає, чи увімкнено режим вимірювання для датчика FLIR Lepton. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_SET_RANGE: int

Встановлює діапазон температур, відображений на значення пікселів у режимі вимірювання. Дивіться CSI.ioctl.

csi.IOCTL_LEPTON_GET_RANGE: int

Повертає діапазон температур, що використовується в режимі вимірювання. Дивіться CSI.ioctl.

csi.IOCTL_HIMAX_MD_ENABLE: int

Керує перериванням виявлення руху на HM01B0. Дивіться CSI.ioctl.

csi.IOCTL_HIMAX_MD_WINDOW: int

Встановлює вікно виявлення руху на HM01B0. Дивіться CSI.ioctl.

csi.IOCTL_HIMAX_MD_THRESHOLD: int

Встановлює поріг виявлення руху на HM01B0. Дивіться CSI.ioctl.

csi.IOCTL_HIMAX_MD_CLEAR: int

Очищає переривання виявлення руху на HM01B0. Дивіться CSI.ioctl.

csi.IOCTL_HIMAX_OSC_ENABLE: int

Керує внутрішнім генератором HM01B0. Дивіться CSI.ioctl.

csi.IOCTL_GET_RGB_STATS: int

Повертає статистику RGB від датчика камери. Дивіться CSI.ioctl.

csi.IOCTL_GENX320_SET_BIASES: int

Встановлює зміщення датчика GENX320 на один із пресетів GENX320_BIASES_*. Дивіться CSI.ioctl. Після CSI.reset драйвер застосовує csi.GENX320_BIASES_LOW_NOISE, а не csi.GENX320_BIASES_DEFAULT — використовуйте цей ioctl для перемикання на інший пресет, якщо застосунку потрібна більша чутливість або пропускна здатність.

csi.GENX320_BIASES_DEFAULT: int

Налаштування за замовчуванням GenX320 — збалансована чутливість, шум і пропускна здатність для загальних сцен.

csi.GENX320_BIASES_LOW_LIGHT: int

Налаштовано для умов слабкого освітлення — обидва пороги контрасту послаблено для вищої чутливості, FO знижено, HPF вимкнено, щоб повільні зміни яскравості все ще реєструвалися.

csi.GENX320_BIASES_ACTIVE_MARKER: int

Налаштовано для відстеження світлодіодів із різким блиманням (активні маркери) — пороги контрасту підвищено, щоб спрацьовували лише різкі переходи, FO та HPF максимально підвищено для збільшення пропускної здатності та відхилення повільного фонового дрейфу, REFR=0, щоб захоплювався кожний фронт блимання.

csi.GENX320_BIASES_LOW_NOISE: int

Стандарт драйвера — нижча чутливість порівняно з DEFAULT (підвищені пороги контрасту) і нижчий FO для меншої фонової активності. Найкраще для статичних або повільних сцен, де хибні події могли б переважати.

csi.GENX320_BIASES_HIGH_SPEED: int

Налаштовано для сцен із швидким рухом — вищий FO для ширшої пропускної здатності пікселів, вищий HPF для відхилення повільних змін, вищий REFR для тривалішого мертвого часу після кожної події, щоб зчитування не перенасичувалося.

csi.IOCTL_GENX320_SET_BIAS: int

Встановлює одне зміщення датчика GENX320 на значення ЦАП. Передайте константу GENX320_BIAS_* (csi.GENX320_BIAS_DIFF_OFF, csi.GENX320_BIAS_DIFF_ON, csi.GENX320_BIAS_FO, csi.GENX320_BIAS_HPF або csi.GENX320_BIAS_REFR) та ціле значення ЦАП. Кожне зміщення є незалежним — викликайте цей ioctl кілька разів для налаштування лише потрібних зміщень після застосування пресету. Дивіться CSI.ioctl.

csi.GENX320_BIAS_DIFF_OFF: int

Поріг від’ємного компаратора — визначає, наскільки піксель має потемніти, перш ніж спрацює csi.PIX_OFF_EVENT. Нижче значення = більша чутливість (більше подій).

csi.GENX320_BIAS_DIFF_ON: int

Поріг позитивного компаратора — визначає, наскільки піксель має яскравішати, перш ніж спрацює csi.PIX_ON_EVENT. Нижче значення = більша чутливість (більше подій).

csi.GENX320_BIAS_FO: int

Частота зрізу нижніх частот пікселя — компроміс між пропускною здатністю пікселя (швидкість/затримка) і фоновою шумовою активністю. Вище значення = швидша реакція пікселя, більше шуму.

csi.GENX320_BIAS_HPF: int

Частота зрізу верхніх частот пікселя — відхиляє повільні зміни яскравості. Вище значення = повільніші зміни відфільтровуються (реєструються лише швидкі переходи).

csi.GENX320_BIAS_REFR: int

Рефрактерний період пікселя — мертвий час після випромінювання пікселем події, протягом якого він не може спрацювати знову. Вище значення = довший мертвий час, менше подій від зайнятого пікселя.

csi.IOCTL_GENX320_SET_AFK: int

Встановлює антибликовий (AFK) фільтр GENX320, який відхиляє події від пікселів, що перемикаються з певною смугою частот (флуоресцентне освітлення, світлодіодні дисплеї тощо). Передайте enable (1 для увімкнення, 0 для вимкнення) і, при увімкненні, межі смуги в герцах: (enable, freq_low_hz, freq_high_hz). Дивіться CSI.ioctl.

csi.IOCTL_GENX320_SET_STC: int

Встановлює режим просторово-часового контрастного (STC) фільтра GENX320. Передайте константу GENX320_STC_* (csi.GENX320_STC_DISABLE, csi.GENX320_STC_ONLY, csi.GENX320_STC_TRAIL_ONLY, csi.GENX320_STC_TRAIL) та поріг(и), необхідні для режиму (у мілісекундах). Дивіться CSI.ioctl.

csi.GENX320_STC_DISABLE: int

Вимикає STC/trail фільтр GENX320 — кожна подія проходить через нього.

csi.GENX320_STC_ONLY: int

Зберігає другу подію пачки; відкидає першу подію та будь-які наступні. Приймає один параметр, stc_threshold у мілісекундах — події в межах цього вікна від попередньої події на тому самому пікселі вважаються частиною тієї самої пачки.

csi.GENX320_STC_TRAIL_ONLY: int

Зберігає першу подію пачки; відкидає наступні події на тому самому пікселі до закінчення trail_threshold. Приймає один параметр, trail_threshold у мілісекундах.

csi.GENX320_STC_TRAIL: int

Зберігає першу подію пачки плюс наступні переходи — поєднує csi.GENX320_STC_ONLY та csi.GENX320_STC_TRAIL_ONLY. Приймає два параметри, stc_threshold та trail_threshold (обидва в мс); датчик вимагає, щоб ці два значення залишались приблизно у співвідношенні 13:1.

csi.IOCTL_GENX320_SET_MODE: int

Встановлює робочий режим GENX320. Передайте csi.GENX320_MODE_HISTO для гістограми подій на чіпі (камера поводиться як звичайна камера у відтінках сірого з налаштованою частотою кадрів) або csi.GENX320_MODE_EVENT з довжиною осі рядка буфера подій ndarray (степінь двійки між 1024 і 65536) для потокової передачі необроблених подій. Дивіться CSI.ioctl.

csi.GENX320_MODE_HISTO: int

Режим гістограми — події накопичуються на чіпі в бункерах на піксель і передаються як кадр у відтінках сірого 320x320 з налаштованою частотою (~20-350 FPS). Камера виглядає як звичайна камера, тому всі стандартні процедури обробки зображень працюють безпосередньо.

csi.GENX320_MODE_EVENT: int

Режим події — обходить гістограму на чіпі та передає необроблені події в numpy ndarray з мікросекундними мітками часу для застосунків, яким потрібна повна часова деталізація, а не попередньо зібраний кадр.

csi.IOCTL_GENX320_READ_EVENTS: int

Зчитує необроблені події у uint16 ndarray форми (EVT_res, 6) (де EVT_res відповідає розміру буфера, переданому до csi.IOCTL_GENX320_SET_MODE). Стовпці: [0] тип події (csi.PIX_OFF_EVENT, csi.PIX_ON_EVENT, csi.EXT_TRIGGER_RISING/FALLING, csi.RST_TRIGGER_RISING/FALLING), [1] мітка часу в секундах, [2] мілісекунди, [3] мікросекунди, [4] координата X (0-319), [5] координата Y (0-319). Повертає кількість подій, записаних у буфер, залишаючи старіші рядки за цим індексом незмінними. Дивіться CSI.ioctl.

csi.IOCTL_GENX320_CALIBRATE: int

Автоматично вимикає гарячі пікселі — пікселі, що спрацьовують помилково навіть на статичній сцені. Драйвер будує карту кількості попадань 320x320 на піксель, обчислює середнє та стандартне відхилення і вимикає будь-який піксель, чия кількість перевищує mean + sigma * stddev. Передайте бюджет підрахунку подій (події для підрахунку перед обчисленням статистики — вище = надійніша оцінка, повільніше; ~10000 є хорошим значенням за замовчуванням) та число sigma у форматі float (нижче = агресивніше, ~0.5 за замовчуванням). Повертає кількість вимкнених пікселів. Спочатку направте камеру на статичну сцену, щоб події від руху не враховувалися для пікселів, що насправді справні. Дивіться CSI.ioctl.

csi.IOCTL_GENX320_READ_EVENTS_RAW: int

Повертає необроблений кадр подій image.Image із GENX320 із подіями у власному упакованому форматі чіпа — корисно, якщо потрібно перенаправити необроблений потік на ПК для автономного декодування, а не обробляти на камері. Дивіться CSI.ioctl.

csi.PIX_OFF_EVENT: int

Тип події GENX320 (стовпець [0]) — піксель виявив зменшення яскравості (пройдено поріг від’ємного контрасту). Стовпці [4]/[5] несуть координати X/Y пікселя.

csi.PIX_ON_EVENT: int

Тип події GENX320 (стовпець [0]) — піксель виявив збільшення яскравості (пройдено поріг позитивного контрасту). Стовпці [4]/[5] несуть координати X/Y пікселя.

csi.RST_TRIGGER_RISING: int

Тип події GENX320 (стовпець [0]) — тригер скидання пікселя, висхідний фронт. X/Y не використовуються. Наразі не генерується мікропрограмою.

csi.RST_TRIGGER_FALLING: int

Тип події GENX320 (стовпець [0]) — тригер скидання пікселя, спадний фронт. X/Y не використовуються. Наразі не генерується мікропрограмою.

csi.EXT_TRIGGER_RISING: int

Тип події GENX320 (стовпець [0]) — зовнішній тригерний вивід датчика зафіксував висхідний фронт. Зовнішній тригерний вхід GENX320 підключений до лінії синхронізації кадрів камери, яка також підведена до P10 на процесорі та роз’ємі виводів. X/Y не використовуються.

csi.EXT_TRIGGER_FALLING: int

Тип події GENX320 (стовпець [0]) — зовнішній тригерний вивід датчика зафіксував спадний фронт. Зовнішній тригерний вхід GENX320 підключений до лінії синхронізації кадрів камери, яка також підведена до P10 на процесорі та роз’ємі виводів. X/Y не використовуються.