получение кадра инфракрасной камеры в поверхностном профи

Информации, похоже, мало, надеюсь, кто-нибудь может указать мне на SDK, библиотеку, код, чтобы получить инфра-кадр с приветственной камеры в Surface Pro.

Поддерживает ли opencv это?

Дополнительная информация: камера Intel AVStream Camera 2500, указанная в диспетчере устройств Surface Pro.


person rukiman    schedule 31.01.2020    source источник
comment
Я уже поддерживаю захват инфракрасных кадров с помощью Intel RealSense SDK для камеры RealSense SR300. Кто-нибудь знает, есть ли такой sdk для камеры Intel 2500?   -  person rukiman    schedule 03.02.2020


Ответы (1)


Насколько мне известно, Media Foundation API не поддерживает инфракрасные камеры. Microsoft не обновляла API, чтобы расширить его на такие входные данные, хотя это технически возможно, когда речь идет о недокументированных.

Вы можете считывать инфракрасные кадры с помощью более нового API, предлагаемого для разработки UWP: Обработка медиакадров с помощью MediaFrameReader, ключевое слово здесь: MediaFrameSourceKind.Infrared. Этот API построен на основе API Media Foundation и Sensor и предоставляет вам инфракрасные камеры, даже несмотря на то, что один только базовый Media Foundation не имеет эквивалентного общедоступного интерфейса.

Учитывая, что это UWP API, у вас могут возникнуть проблемы с согласованием всего этого с OpenCV, если вам нужен последний. Здесь может помочь мост UWP/OpenCV: Создать вспомогательный компонент среды выполнения Windows для взаимодействия с OpenCV.

Так как OpenCV якобы взаимодействует напрямую с традиционными Windows API, DirectShow и Media Foundation, маловероятно, что он способен захватывать инфракрасный поток из коробки, если, конечно, сам драйвер не представляет его как обычное видео. «Правильная» разметка на Surface Pro как инфракрасная, таким образом, скрывает датчик от упомянутых API и, соответственно, OpenCV.

person Roman R.    schedule 31.01.2020
comment
Можно ли вызвать UWP API из приложения WPF .NET? - person rukiman; 03.02.2020
comment
См. stackoverflow.com/questions/33692898/ - person Roman R.; 03.02.2020
comment
Я видел это до того, как написал комментарий. Я попробовал, но не смог найти пространство имен Windows.Devices.Perception через DLL, на которую они ссылались. - person rukiman; 05.02.2020
comment
О, я только что заметил, что пространство имен отличается в вашем MediaFrameReader. Я попробую еще раз. - person rukiman; 05.02.2020
comment
Я могу подтвердить, используя трюк, что эти API доступны для .NET. Теперь попытаюсь получить ИК-кадр. - person rukiman; 20.02.2020
comment
Мне удалось запустить образец приложения CameraFrames, но не удалось получить инфракрасную рамку. Я создал новый вопрос для этого stackoverflow.com/questions/60333417/ - person rukiman; 21.02.2020
comment
Формат был NV12, который не поддерживает пример приложения CameraFrames, я изменил его, и теперь я могу видеть инфракрасные кадры. Я думаю, что windows.devices.perception кажется API более высокого уровня для того, что я хочу сделать. Является ли этот рекомендуемый API для получения инфрафреймов? - person rukiman; 24.02.2020
comment
Странно, что инфракрасный кадр NV12, насколько я помню, он полутоновый, то есть с одной цветовой составляющей. - person Roman R.; 24.02.2020
comment
Да, изображение в градациях серого, когда я преобразовал NV12 в ARGB8, чтобы отобразить его. Любая идея, почему нет рамки глубины? Я бы хотел, хотя он был бы сгенерирован. Поскольку его нет, я думаю, что мой единственный выбор — смотреть в инфракрасном диапазоне и использовать что-то вроде того, что чем белее объект, тем он ближе. Но я бы не знал глубины. - person rukiman; 24.02.2020
comment
Насколько я помню, на Surface Pro есть инфракрасная камера (Microsoft IR Camera Front), но нет камеры глубины. - person Roman R.; 24.02.2020
comment
По поводу NV12 - проверил свои данные, ИК камера предлагает форматы NV12 и IANV на низком уровне. UWP API, похоже, игнорирует IANV и предоставляет только NV12. Так что да, у вас, возможно, NV12 как единственный вариант, а затем UV-компоненты там, вероятно, ожидаются обнуленными. - person Roman R.; 24.02.2020
comment
Спасибо за проверку. Можно ли сгенерировать или определить глубинные изменения, глядя на ИК-кадр? В противном случае моей единственной надеждой на обнаружение живости будет проверка лица в ИК-кадре, а также в кадре RGB. - person rukiman; 25.02.2020
comment
Данных о глубине там явно нет. Требуется использовать другую технологию (камера глубины = камера времени полета), поэтому с RGB + IR у вас просто есть дополнительный канал информации, который поможет вам, например, идентифицировать формы и сегментировать изображение без 3D-данных. - person Roman R.; 25.02.2020
comment
ОК, я получил инфра- и rgb-кадры. Но я немного озадачен тем, как использовать ИК-рамку для живости. Если я подниму фотографию лица, я ясно увижу фотографию лица в ИК-кадре. Возможно, Windows Helo каким-то образом получает кадр глубины, но он не отображается в Surface Pro через API? - person rukiman; 27.02.2020