Pull to refresh
0

Камера Intel RealSense R200 — образцы кода

Reading time 6 min
Views 13K
Original author: Bryan Brown


Для программистов, недавно начавших работать с технологией Intel RealSense, мы подготовили пост c тремя простыми примерами, демонстрирующими возможности камеры R200. В число примеров вошли:
  • Запись и просмотр необработанных потоков
  • Изменение фокусировки по глубине
  • Отслеживание лица


Запись и просмотр необработанных потоков камеры R200


В этом доступном для загрузки коде демонстрируются основы записи и просмотра необработанных потоков камеры R200 на C#/XAML с помощью Intel® RealSense™ SDK для Windows*. Решение Visual Studio* состоит из четырех простых проектов (размер каждого — не более 200 строк кода).
  • ColorStream — отображение цветового потока с камеры RGB.
  • DepthStream — отображение потока глубины.
  • IRStreams — отображение правого и левого потоков инфракрасной камеры.
  • AllStreams — отображение всего перечисленного в одном окне (см. рис. 1).


Рисунок 1. Образец кода для всех потоков

Среда разработки программного обеспечения


Этот образец кода был создан в Windows® 10 RTM с помощью Microsoft Visual Studio Community 2015. Для этого образца был использован шаблон проекта Visual C#WindowsClassic Desktop.
Версии SDK и DCM, использованные в этом проекте.
  • Intel® RealSense™ SDK v6.0.21.6598
  • Intel® RealSense™ Depth Camera Manager R200 v2.0.3.39488

Описание оборудования


Для данной работы мы использовали комплект Intel® RealSense™ Developer Kit (R200), в состав которого входит камера, кабель USB3 и магнитное крепление для установки камеры на ноутбуке (рис. 2).


Рисунок 2. Intel® RealSense™ Developer Kit (R200)

Для образца кода R200 действуют следующие требования к оборудованию:
  • Процессор Intel® Core™ 4-го поколения (или более позднего).
  • 150 МБ свободного места на жестком диске.
  • ОЗУ 4 ГБ.
  • Камера Intel® RealSense™ (R200).
  • Доступный порт USB3 для камеры R200 (или выделенное подключение для встроенной камеры).

Важно! Для поддержки потока данных, передаваемого камерой, требуется интерфейс USB3. Этот интерфейс должен быть подключен к выделенному порту USB3 на клиентской системе (без использования разветвителя).

Описание кода


Решение в Visual Studio состоит из четырех проектов WPF, разработанных на C#. Эти проекты используют явно заданный путь к libpxcclr.cs.dll (управляемой DLL-библиотеке):

C:\Program Files (x86)\Intel\RSSDK\bin\x64

Не забудьте изменить этот путь, если в вашей системе пакет SDK установлен в другую папку.
Так как мы запускаем 64-битную версию DLL, перейдите в меню ProjectPropertiesPlatform target (Проект → Свойства → Целевая платформа) и убедитесь, что там выбрано значение «x64».
Чтобы собрать и запустить определенный проект, щелкните правой кнопкой мыши имя проекта (например, AllStreams) в Solution Explorer (обозревателе решений) и выберите Set as StartUp Project (Назначить запускаемым проектом) в меню.

Все проекты в составе решения CameraStreams обладают схожей структурой.

Настройте интерфейс Session и SenseManager.

Запустите рабочий поток с именем Update, в котором обрабатывается цикл AcquireFrameReleaseFrame.

В цикле AcquireFrameReleaseFrame происходят следующие действия.
  • Получение данных изображения.
  • Вызов метода Render для обновления пользовательского интерфейса.
  • Высвобождение ресурсов.
  • Высвобождение кадра.

В методе Render происходят следующие действия.
  • Вызов метода ConvertBitmap для преобразования каждого растрового кадра в тип BitmapImage, который требуется для отображения каждого кадра в элементе управления WPF Image.
  • Обновление пользовательского интерфейса путем делегирования работы диспетчеру, связанному с потоком пользовательского интерфейса.

Метод ShutDown вызывается при каждом возникновении событий Window_Closing или btnExit_Click. В методе ShutDown происходят следующие действия.
  • Остановка метода Update.
  • Удаление объектов.


Изменение фокусировки по глубине


В этом примере кода C#/XAML демонстрируются основы работы с модулем Enhanced Photography (EP) в Intel® RealSense™ SDK для Windows* для изменения фокусировки изображения после его съемки. Этот образец кода выполняет следующие действия.
  • Отображение цветового потока RGB камеры R200 в элементе управления Image (слева).
  • Съемка кадра и отображение его во втором элементе управления Image (справа).
  • Изменение фокусировки и диафрагмы с помощью ползунка.
  • Сохранение измененного изображения в виде стандартного JPG-файла (Snapshot.jpg).


Рисунок 3. Пример изменения фокусировки по глубине (фокусировка на цветке)


Рисунок 4. Сохраненный файл изображения

Как описано в руководстве по SDK (в файле RSSDK_DIR\doc\PDF\sdkmanuals.pdf), модуль Enhanced Photography (EP) расширяет традиционные возможности обработки фото и видео за счет использования трехмерной информации (в частности, данных о глубине), записанной вместе с фотографиями и видео. Функция изменения глубины резкости меняет фокусировку и глубину резкости кадра после его съемки. (Обратите внимание, что этот алгоритм работает только с камерой R200.)

Описание оборудования


Для этой работы мы использовали комплект Intel® RealSense™ Developer Kit (R200). Камера была установлена на ноутбук с помощью магнитного крепления, входящего в комплект (рис. 5).


Рисунок 5. Камера, присоединенная к магнитному креплению

Примечания к сборке


В этом проекте используется пространство имен System.Drawing.Imaging. Ссылка на него указывается вручную: в новом проекте щелкните правой кнопкой мыши References (Ссылки) в Solution Explorer (обозревателе решений) и выберите Add Reference… (Добавить ссылку…), чтобы открыть окно диспетчера ссылок. Затем выберите Assemblies, Framework (Сборки, платформа) и найдите System.Drawing в списке. Установите флажок и нажмите кнопку ОК.

В этом проекте используют явно заданный путь к libpxcclr.cs.dll (управляемой DLL-библиотеке): C:\Program Files (x86)\Intel\RSSDK\bin\x64. Не забудьте изменить этот путь, если в вашей системе пакет SDK установлен в другую папку.

Поскольку проект ссылается на 64-разрядную версию DLL-библиотеки, убедитесь, что параметр «x64» указан в разделе ProjectPropertiesPlatform target (Проект → Свойства → Целевая платформа).

Проект включает команду события после сборки, чтобы убедиться в копировании неуправляемой DLL-библиотеки (libpxccpp2c.dll) в целевую выходную папку:
if "$(Platform)" == "x86" (copy /y "$(RSSDK_DIR)\bin\win32\libpxccpp2c.dll" "$(TargetDir)" ) else ( copy /y
"$(RSSDK_DIR)\bin\x64\libpxccpp2c.dll" "$(TargetDir)" )


Отслеживание лица


В этом примере кода C#/XAML демонстрируются основы работы с алгоритмом отслеживания лиц в Intel® RealSense™ SDK для Windows* для обнаружения и отслеживания лиц людей в реальном времени с помощью камеры R200. Этот образец кода выполняет следующие действия.
  • Отображение цветового потока RGB камеры R200 в элементе управления Image.
  • Наложение прямоугольного элемента управления, который отслеживает расположение лица пользователя (в зависимости от того, где находится пользователь в поле зрения камеры).
  • Отображение количества лиц, обнаруженных камерой R200.
  • Отображение высоты и ширины отслеживаемого лица.
  • Отображение двухмерных координат (X и Y) отслеживаемого лица.
  • Указание глубины лица, то есть расстояния от камеры R200 до лица.
  • Поддержка и отображение отслеживания оповещений, подписка на обработчик событий.


Рисунок 6. Образец кода для отслеживания лиц

Описание оборудования


Для этой работы мы использовали комплект Intel® RealSense™ Developer Kit (R200). Камера была установлена на стандартный штатив с помощью приобретаемого дополнительно магнитного крепления** (рис. 7).


Рисунок 7. Камера, присоединенная к магнитному креплению (может поставляться не во всех комплектах)

Примечания к сборке


Смотрите предыдущий пример.

Описание кода


Образец кода имеет следующую структуру.

Настройте интерфейс Session и SenseManager, а также модуль распознавания лиц.
Запустите рабочий поток с именем Update, в котором обрабатывается цикл AcquireFrameReleaseFrame.
В цикле AcquireFrameReleaseFrame происходят следующие действия.
  • Получение данных изображения.
  • Получение данных модуля распознавания лиц.
  • Вызов метода Render для обновления пользовательского интерфейса.
  • Высвобождение ресурсов.
  • Высвобождение кадра.

В методе Render происходят следующие действия.
  • Вызов метода ConvertBitmap для преобразования каждого растрового кадра в тип BitmapImage, который требуется для отображения каждого кадра в элементе управления WPF Image.
  • Обновление пользовательского интерфейса путем делегирования работы диспетчеру, связанному с потоком пользовательского интерфейса.

Метод ShutDown вызывается при каждом возникновении событий Window_Closing или btnExit_Click. В методе ShutDown происходят следующие действия.
  • Остановка метода Update.
  • Удаление объектов.
Tags:
Hubs:
+9
Comments 8
Comments Comments 8

Articles

Information

Website
www.intel.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
США
Representative
Анастасия Казантаева