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.
класс 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.
- 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¶
Устанавливает частоту кадров в Гц для модуля камеры.
Возвращает текущий framerate, если вызывается без аргументов.
Примечание
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всегда возвращает недавний кадр.Возвращает текущее значение count, если вызывается без аргументов.
- 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 после изменения.Возвращает зарегистрированную функцию обратного вызова, если вызывается без аргументов. Передайте любое не вызываемое (non-callable) значение, чтобы очистить функцию обратного вызова.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
Регистрирует функцию обратного вызова
cbдля выполнения (в контексте прерывания) всякий раз, когда модуль камеры генерирует новый кадр и кадр готов к чтению черезCSI.snapshot.cbне принимает аргументов. Используйте это, чтобы запланировать чтение кадра позже с помощьюmicropython.schedule().Возвращает зарегистрированную функцию обратного вызова, если вызывается без аргументов. Передайте любое не вызываемое (non-callable) значение, чтобы очистить функцию обратного вызова.
- 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, указывает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 (радиометрический или нет) в виде int.
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)Возвращает температуру матрицы фокальной плоскости 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)Применяет предустановку смещений (bias).
preset— это одна из константGENX320_BIASES_*.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Устанавливает одно смещение (bias).
bias— это одна из константGENX320_BIAS_*;value— целочисленное значение настройки.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Настраивает фильтр антимерцания.
enable— это bool; необязательные аргументы частоты задают полосу пропускания фильтра.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,ndarrayтипаuint16формы(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 (растровое изображение). Каждый пиксель занимает 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.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_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_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_THRESHOLD: int¶
Устанавливает порог обнаружения движения на HM01B0. См.
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 в значение DAC. Передайте константу
GENX320_BIAS_*(csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPFилиcsi.GENX320_BIAS_REFR) и целочисленное значение DAC. Каждое смещение независимо — вызывайте этот 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¶
Читает необработанные события в
ndarrayтипа uint16 формы(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 (меньше = более агрессивно, ~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 не используются. В настоящее время не генерируется прошивкой.