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та/абоframessnapshot повернеNone.blockingможе мати значенняFalseдля увімкнення неблокуючої поведінки, при якій snapshot повертатимеNone, коли наступне зображення з камери ще не готове, замість очікування.imageможе бути іншим об’єктомimage.Imageдля оновлення новим зображенням, захопленим з камери, замість повернення нового об’єктаimage.Image. Попередній вміст зображення перезаписується за допомогою глибокого копіювання.Якщо
CSI.auto_rotationувімкнено, цей метод поверне вже повернутеimage.Image.
- 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для алгоритму автоматичного керування підсиленням.Примітка
Щоб відстежувати кольори, також потрібно вимкнути баланс білого.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enableвмикає (True) або вимикає (False) автоматичне керування витримкою. Камера запускається з увімкненим автоматичним керуванням витримкою.Якщо
enableмає значенняFalse, можна встановити фіксований час витримки в мікросекундах за допомогоюexposure_us.Примітка
Алгоритми автоматичної витримки камери досить консервативні щодо зміни значення витримки і, як правило, уникають значних змін витримки. Натомість вони значно змінюють значення підсилення для адаптації до змін освітлення.
- 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¶
enableTrueдля увімкнення,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, instructsframesize()оптимізувати за полем зору, а не частотою кадрів.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-бітний ідентифікатор атрибута;payload—bytes/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,uint16ndarrayформи(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.Повертає поточне налаштування, якщо викликано без аргументів.
Функції¶
Константи¶
- csi.BINARY: int¶
Формат пікселів BINARY (bitmap). Кожен піксель займає 1 біт. Корисно для зберігання масок; можна використовувати з
image.Image().
- csi.RGB565: int¶
Формат пікселів RGB565. Кожен піксель займає 16 біт (5 біт червоного, 6 біт зеленого, 5 біт синього).
- 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.NORMAL: int¶
Нормальний режим для
CSI.special_effect.
- csi.NEGATIVE: int¶
Негативний режим для
CSI.special_effect.
- csi.SXGA: int¶
Роздільна здатність 1280x1024 для датчика камери. Працює лише для камер OV2640/OV5640.
- csi.UXGA: int¶
Роздільна здатність 1600x1200 для датчика камери. Працює лише для камер OV2640/OV5640.
- 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_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_RESOLUTION: int¶
Повертає роздільну здатність АЦП FLIR Lepton у бітах. Дивіться
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_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_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 не використовуються. Наразі не генерується мікропрограмою.