Аппаратные метки времени: руководство
Метки времени — одна из ключевых функций камер GigE Vision. Обычно их применяют вместе с протоколом точного времени PTP (Precision Time Protocol), чтобы точно синхронизировать и запускать несколько камер в промышленных системах технического зрения.
Если у модуля камеры есть собственные часы, он может ставить метки времени на кадры или вычислять интервалы между ними. Метка показывает, когда именно снят каждый кадр. Опытный разработчик систем машинного зрения использует эти данные, чтобы строить сложные многокамерные приложения или точно согласованные системы, где изображение и видео объединяются с сигналами других датчиков, — так растут качество результата и эффективность.
Проекты с промышленными камерами всегда обходятся дорого. Если перенести ключевые функции вроде меток времени на модули камер с почти такими же характеристиками, но дешевле, многие промышленные задачи можно решить с меньшими затратами.
Arducam решила закрыть этот пробел.
В новом SDK и плате USB3 Camera Shield Plus появилась поддержка аппаратных меток времени. Внутренние часы модуля синхронизируются со временем UTC хоста через SDK, и к каждому кадру добавляется точная глобальная метка времени. Так можно синхронизировать камеры Arducam с любыми другими датчиками системы, а нужные кадры по сохранённым меткам легко найти при постобработке, сопоставить с другими данными или передать в другие приложения.
Подробнее — в блоге Arducam. Ниже — примеры того, как получить текущую метку времени.

1. Формат метки времени
Текущий формат метки времени:
FILETIME: число интервалов по 100 нс, прошедших с 1 января 1601 года
Пример:
132702865451985472 — это пятница, 9 июля 2021 года, 6:42:25
2. Оборудование
Нужна только одна плата USB3.0 Camera Shield Plus с прошивкой версии 3.20 или новее.

3. Программная часть
3.1. Текущая метка времени в C++
После вызова функции ArduCam_readImage заполняется структура frameData. Её тип — ArduCamOutData, он определён так:

Метка времени хранится в поле u64Time структуры frameData.

3.2. Текущая метка времени в Python
Функция Py_ArduCam_readImage возвращает три значения: код состояния (status), данные изображения (data) и словарь со сведениями об изображении (cfg). Метка времени хранится в cfg, её ключ — u64Time:
