Kinect для windows sdk что это

Kinect for Windows

Manufacturing of the Kinect for Windows has been discontinued. The next generation of Microsoft’s category-defining depth sensor lives on in the Azure Kinect DK, a developer kit with advanced AI sensors for sophisticated computer vision and speech models. For more details please visit the Azure Kinect website.

Kinect for Windows SDK 2.0

Build desktop applications for Windows 10 or sell your Kinect v2 UWP apps in the Microsoft Store to take advantage of unique Windows Runtime features and expand distribution.

Developer resources

Learn how to implement different Kinect for Windows features and more about tools, like Kinect Studio, that support your development experience.

Connect with Microsoft and other developers like yourself on technical forums, Facebook, and Twitter to keep current on the latest news and announcements relevant to Windows app and game development.

Get troubleshooting advice, warranty and safety information, and more.

Tools and extensions

Windows developer tools

These tools include a free, full-featured Visual Studio Community client, universal app templates, a code editor, a powerful debugger, Windows Mobile emulators, rich language support, and more, all ready to use in production.

NuGet and Unity Pro add-ons

Install the Kinect SDK 2.0 and use the NuGet packages for a better .NET Framework development experience. You can also take advantage of the Unity Pro packages to build Kinect-based Unity apps.

Kinect for Windows language packs

The language packs enable you to add speech recognition to your Kinect for Windows apps.

Because the Windows SDK is the primary developer SDK for Windows, DirectX is now included in it. You can now use the Windows SDK to build great games for Windows.

Microsoft Speech Platform SDK 11

You can use the technologies and tools in the Speech Platform SDK 11 to give applications the ability to recognize spoken words (speech recognition) and to generate synthesized speech (text-to-speech or TTS). Using this SDK, you can give users an effective and natural way to interact with your applications, complementing the use of mice, keyboards, controllers, and gestures.

Kinect Configuration Verifier

Run the Kinect Configuration Verifier tool to check your system for issues and to verify that you’re running the latest driver for your GPU.

Kinect для Windows

Производство Kinect для Windows прекращено. Новое поколение задающих стандарты датчиков глубины от Майкрософт реализовано в Azure Kinect DK, пакете разработчика для компьютеров с улучшенными датчиками ИИ для создания сложных моделей компьютерного зрения и речи. Дополнительные сведения можно найти на веб-сайте Azure Kinect.

Kinect для пакета Windows SDK 2.0

Создавайте классические приложения для Windows 10 или размещайте свои приложения Kinect версии 2 как приложения UWP в Microsoft Store — воспользуйтесь уникальными возможностями среды выполнения Windows и донесите ваши приложения до пользователей.

Ресурсы для разработчиков

Содержимое для разработчиков

Сведения о том, как реализовать различные возможности Kinect для Windows, и дополнительная информация о средствах в помощь разработчику, таких как Kinect Studio.

Общайтесь со специалистами Майкрософт и вашими коллегами-разработчиками на технических форумах, в Facebook и Twitter, чтобы оставаться в курсе последних новостей и объявлений, касающихся разработки игр и приложений для Windows.

Советы по устранению неполадок, информация о гарантии, инструкции по технике безопасности и другие сведения.

Средства и расширения

Средства разработчика для Windows

В этот набор средств входят: бесплатный полнофункциональный клиент Visual Studio Community, шаблоны универсальных приложений, редактор кода, мощный отладчик, эмуляторы Windows Mobile. Также поддерживается большое число языков и множество других функций, готовых для использования в рабочей среде.

Надстройки NuGet и Unity Pro

Установите пакет SDK Kinect 2.0 и используйте пакеты NuGet для оптимизации разработки с помощью .NET Framework. Можно также воспользоваться преимуществами пакетов Unity Pro для создания приложений Unity на базе Kinect.

Языковые пакеты Kinect для Windows

Языковые пакеты позволяют добавлять функции распознавания речи в приложения Kinect для Windows.

Поскольку пакет Windows SDK — основной комплект пакета SDK для разработчиков для Windows, DirectX теперь входит в него. Теперь при помощи пакета Windows SDK можно создавать отличные игры для Windows.

Microsoft Speech Platform SDK 11

Читайте также:  Как сменить пароль линукс минт

Вы можете использовать технологии и средства в составе пакета Microsoft Speech Platform SDK 11, чтобы добавить в свои приложения функцию распознавания произнесенных слов (распознавание речи) и создания синтезированной речи (преобразование текста в речь, или TTS). С помощью этого пакета SDK вы можете предоставить пользователям эффективный и естественный способ взаимодействия с вашим приложением, дополняющий использование мыши, клавиатуры, контроллеров и жестов.

Средство проверки конфигурации Kinect

Запустите средство проверки конфигурации Kinect, чтобы проверить систему на предмет неполадок и убедиться, что у вас установлена последняя версия драйвера для вашего графического процессора.

Kinect for Windows SDK. Часть 1. Сенсор

  • [Kinect for Windows SDK. Часть 1. Сенсор]
  • Kinect for Windows SDK. Часть 2. Потоки данных
  • Kinect for Windows SDK. Часть 3. Функциональные возможности
  • Играем в кубики с Kinect
  • Программа, апорт!

Три части обзорной статьи можно считать вводными к двум другим: «Играем в кубики с Kinect» и «Программа, апорт!». Хотя хронологически они идут последними. Более того, за время их написания Microsoft успел выпустить новую версию SDK – 1.5. Какой удар со стороны корпорации!

Как вам должно быть известно, Kinect – это бесконтактный контроллер, т.е. скажем в играх, вместо того, чтобы яростно стучать по клавиатуре или терзать gamepad, вы размахиваете руками и ногами и время от времени голосом даете какие-то команды. Самое время спрятать дорогие китайские вазы X века подальше!

Начинать знакомство с Kinect лучше со знакомства с самим сенсором. Это небольшая черная коробочка с тремя камерами, длиной чуть более 20 см и высотой около 5 см (не считая ножки). Один нюанс – в Kinect две камеры. И это изображение (взято из MSDN) тому подтверждение.

  • IR Emitter – Инфракрасный излучатель. Да, это не камера. Его назначение испускать инфракрасные лучи, которые, отражаясь от предметов, попадают назад в сенсор, где их принимает:
  • IR Depth Sensor – Инфракрасный приёмник. Собирает отраженные лучи, преобразуя их в расстояние от сенсора до объекта(ов). И таким образом строится, можно сказать, матрица расстояний — целый кадр. Максимальное разрешение 640×480 (30 fps). Если говорить о переводе мне кажется, «ИК приёмник» лучше отражает суть, чем дословный «ИК датчик глубины».
  • Color Sensor – Цветная камера. Захват видео с максимальным разрешением 1280×960 (12fps). Угол обзора камеры: 43° по вертикали и 57° по горизонтали (угол обзора дальномера идентичный). Можно выбрать формат картинки: RGB или YUV.
  • Microphone Array – набор микрофонов. 4 встроенных микрофона позволяют определить местоположение источника звука и направление звуковых волн. Встроенный обработчик звукового сигнала включает подавление эха и уменьшение шума.
  • Tilt Motor – Коррекция наклона. Позволяет программно настраивать наклон сенсора в диапазоне ±27° по вертикали.

Сенсор подключается к компьютеру через USB, хотя, строго говоря, USB устройством не является, т.к. имеет несколько отличную прошивку, нежели стандартное USB устройство. Найти какие-либо комментарии по этому поводу не получилось, но можно предположить, что сделано это исключительно в целях повышения производительности. Вы можете подключить до четырех сенсоров одновременно.

Другой важный аспект аппаратной части – диапазон «рабочих» расстояний, т.е. на каком расстоянии сенсор способен видеть объекты (данные дальномера). И снова картинка помогает продемонстрировать возможности Kinect.

Режим Default Range доступен как для Kinect for Windows, так и для Kinect for XBox, но Near Range доступен только для сенсора Kinect for Windows. Простой пример: для всех объектов в кадре находящихся в пределах Normal Values сенсор вернёт измеренное расстояние, но для объектов, выходящих за этот диапазон, сенсор вернёт либо ноль, либо определенную для каждого диапазона константу (зависит от заданных вами настроек). Одно из существенных отличий SDK 1.5 от 1.0 в том, что теперь в режиме Near Range можно получить информацию о сидящем человеке, это так называемый трекинг сидящей фигуры (seated skeletal tracking). Kinect отслеживает 10 точек: голову, шею и руки. Но об этом чуть позже.

Хочется обратить внимание на различия двух Kinect (XBox и Windows). Первый разрабатывался и тестировался с одним устройством – XBox. Второй же, напротив, должен работать с широким диапазоном устройств (компьютеров), поэтому его кабель короче, а специальное устройство призвано не позволить Kinect подраться с остальной USB периферией. Лицензионное соглашение позволяет использовать Kinect for Windows в коммерческих целях, а Kinect for XBox нет.

Перейдем теперь к установке SDK. В версии 1.5 Microsoft разделил SDK на два пакета. Скачать их можно с официальной страницы:

  • Kinect for Windows SDK. Включает APIs и драйверы сенсора.
  • Kinect for Windows Developer Toolkit. Включает Kinect Studio (полезный для отладки инструмент), Face Tracking SDK, примеры кода и документация.
Читайте также:  Linux терминал буфер обмена

Не будем останавливаться на установке SDK, в этом нет ничего сложного или интересного. А вот что действительно интересно так это то, что же разработчик может получить от Kinect? Взглянем на следующие возможности:

  • Skeletal Tracking (трекинг человеческой фигуры)
  • Face Tracking (трекинг лица)
  • Speech Recognition (распознавание речи)

Обзор этих функций вы найдете в следующих частях статьи.

Полезные ссылки:

  • Kinect for Windows SDK
  • Руководство разработчика. Можно найти примеры на C# (managed code) и на C/C++ (unmanaged code)
  • Kinect for Windows Quickstart Series. Серия видео-уроков о возможностях Kinect (весьма полезная для знакомства с устройством).
  • Near Mode: What it is (and isn’t). Статья о near mode, хотя написана в преддверии SDK 1.0, но полезна в плане разоблачения некоторых мифов.
  • Форумы Kinect for Windows SDK. Здесь можно обратиться за советом к экспертам.

Kinect for Windows SDK. Часть 3. Функциональные возможности

Трекинг человеческой фигуры

С помощью такой замечательной функции Kinect способен распознать фигуру человека и его движения. И, на самом деле, даже не одного, а целых шести! В смысле определить, что в поле зрения сенсора находиться до шести людей, но только для двух может быть собрана детальная информация. Взгляните на рисунок:

Лично у меня первый вопрос был: «Почему именно для этих двух перцев он[Kinect] построил полный 20-ти точечный скелет, а у остальных показал только пупки?» Но дело тут не в дискриминации, просто так сенсор действует по умолчанию – для первых двух распознанных фигур строится детальный скелет, остальные довольствуются тем, что их хотя бы заметили. В MSDN есть даже пример, как изменить это поведение, например, чтобы строить детальный скелет для ближайших к сенсору людей.

Точки в построенном скелете называются Joint, что можно перевести как сустав, соединение, узел. Узел мне кажется более адекватным переводом, да и голову называть суставом, как-то не очень хорошо.

Итак, первое, что необходимо сделать в приложении, чтобы получать информацию о фигурах в кадре, это включить нужный поток:

Второе – обработать событие SkeletonFrameReady. Все что остается сделать – извлечь из кадра информацию об интересующих фигурах. Одна фигура – один объект класса Skeleton. Объект хранит данные о состоянии трекинга — свойство TrackingState (построен ли полный скелет или же известно только о местоположении фигуры), данные об узлах фигуры – свойство Joints. По сути это словарь, ключами которого являются значения перечисления JointType. Вот например, захотелось вам получить местоположения левого колена – нет ничего проще!

Значения перечисления JointType оригинально показаны на рисунке витрувианского человека.

До этих строк я писал о 20-ти узловом скелете. Построить который не всегда представляется возможным. Так появился режим, называемый трекинг сидящей фигуры (seated skeletal tracking). В этом режиме сенсор строит не полный 10-ти узловой скелет.

Чтобы Kinect начал распознавать фигуры в этом режиме достаточно установить свойство TrackingMode объекта SkeletonStream во время инициализации потоков:

В режиме трекинга сидящей фигуры сенсор так же может распознавать до шести фигур и отслеживать две фигуры. Но есть и свои особенности. Так, например, чтобы сенсор «заметил» вас необходимо подвигаться, помахать руками, в то время как в режиме распознавания полного скелета достаточно встать перед сенсором. Трекинг сидящей фигуры более ресурсоемкая операция, поэтому будьте готовы к уменьшению FPS.

Другая статья цикла — Играем в кубики с Kinect, целиком посвящена теме трекинга человеческой фигуры.

Распознавание речи

Строго говоря, распознавание речи не является встроенной возможностью Kinect, так как для этого используется дополнительный SDK, а сенсор выступает в роли источника аудиосигнала. Поэтому для разработки приложений распознавания речи потребуется установка Microsoft Speech Platform. По желанию можно устанавливать разные языковые пакеты, а для клиентских машин существует отдельный пакет (speech platform runtime).

В общем случае вариант использования speech platform следующий:

  1. выбрать обработчик (engine) распознавания для требуемого языка из доступных в системе;
  2. создать словарь и передать его выбранному обработчику. Говоря по-человечески, необходимо решить какие слова ваше приложение должно уметь распознавать и передать их обработчику распознавания в виде строк (нет нужды создавать аудиофайлы со звучанием каждого слова);
  3. установить для обработчика источник аудиосигнала. Это могут быть Kinect, микрофон, аудиофайл;
  4. дать команду обработчику для начала распознавания.

После этого остается только обрабатывать событие, возникающее всякий раз, когда обработчик распознает слово. Пример работы с этой платформой вы найдете в статье Программа, апорт!

Трекинг лица

В отличие от трекинга фигуры, трекинг лица полностью реализуется программно, на основании данных получаемых из видеопотока (color stream) и потока данных дальномера (depth stream). Поэтому от ресурсов клиентского компьютера будет зависеть то, как быстро будет работать трекинг.

Читайте также:  Установочные файлы для mac os

Стоит отметить, что трекинг лица (face tracking) это не то же самое что распознавание лиц (face recognition). Забавно, но в некоторых статьях встречал именно рассказы о том, что в Kinect реализована функция распознавания лиц. Так что же такое трекинг лица и где он может быть полезен?

Трекинг лица – это слежение за лицом человека в кадре с построением 87-ми узловой схемы лица. В MSDN сказано, есть возможность следить за несколькими лицами, но не сказано о верхнем пределе, вероятно, он равен двум (для стольких людей сенсор может построить N узловой скелет). Функционал может быть полезен в играх, чтобы ваш персонаж (avatar) мог передать всю палитру отображаемых на вашем лице эмоций; в приложениях, которые адаптируются под ваше настроение (плаксивое или игривое); в приложениях распознавания лиц, наконец, или даже эмоций (доктор Лайтман?).

Итак, схема. Собственно вот она (схема моей мечты):

Помимо этих 87 узлов, вы можете получить координаты еще для 13: центры глаз, носа, уголки губ и границы головы. SDK даже может построить 3D маску лица, как показано на следующем рисунке:

Теперь, вооружившись общим понимание трекинга лица реализуемого Face Tracking SDK, самое время познакомиться с ним поближе. Face Tracking SDK – это COM-библиотека (FaceTrackLib.dll), входящая в состав Developer Toolkit. Там же есть и проект обертка (wrapper) Microsoft.Kinect.Toolkit.FaceTracking, который можно смело использовать в managed проектах. К сожалению, найти описание обертки не получилось, кроме приведенной ссылки (полагаю, что пока идет активная разработка и пока Face Tracking SDK не включен в состав Kinect SDK, остается только ожидать появление справки в MSDN).

Я остановлюсь лишь на нескольких классах. Центральное место занимает класс FaceTracker, как ни странно. В его задачи входит инициализация обработчика (engine) трекинга и слежение за перемещениями человека в кадре. Перегруженный метод Track, позволяет осуществлять поиск человека по данным с видеокамеры и дальномера. Одна из перегрузок метода принимает фигуру человека — Skeleton, что положительно сказывается на скорости и качестве поиска. Класс FaceModel помогает в построении 3D моделей, а так же занимается трансформацией моделей в систему координат камеры. В проекте Microsoft.Kinect.Toolkit.FaceTracking помимо классов оберток, можно найти и более простые, но не менее полезные типы. Например, перечисление FeaturePoint описывает все узлы схемы лица (см. выше рисунок с 87 точками).

В общем виде алгоритм использования трекинга может выглядеть следующим образом:

  1. выбрать сенсор и включить видеопоток (color stream), поток данных дальномера (depth stream) и поток трекинга фигуры (skeleton stream);
  2. добавить обработчик события сенсора AllFramesReady, которое возникает, когда кадры всех потоков готовы к использованию;
  3. в обработчике события инициализировать FaceTracker (если это еще не сделано) пройтись по найденным в кадре фигурам и собрать для них построенные схемы лиц;
  4. обработать схемы лиц (например, показать построенную 3D маску или определить эмоции людей в кадре).

Хочу отметить, что я умышленно не привожу примеры кода, т.к. привести пример в пару строк не получится, а перегружать статью гигантскими многострочными листингами не хочется.

Помните, что качество нахождения лица в кадре зависит как от расстояния до головы, так и от её положения (наклонов). Приемлемыми наклонами головы для сенсора считаются вверх-вниз ±20°, влево-вправо ±45°, наклон на бок ±45°. Оптимальными будут ±10°, ±30° и ±45° для наклонов вверх-вниз, влево-вправо и набок соответственно (см. 3D Head Pose).

Kinect Studio

Когда первый раз пытаешься написать, что-то для Kinect, чувство того, что чего-то не хватает, не покидает ни на минуту. И когда в сотый раз настраиваешь точки останова так, чтобы они сработали именно при определенном жесте, и когда в сотый раз делаешь этот жест перед камерой, вот тогда и понимаешь чего же не хватает на самом деле! Простого эмулятора. Чтобы можно было записать нужные жесты, а потом спокойно сидеть и отлаживаться. Как ни странно, лучи добра посланные разработчиками всего мира, испытавшими разработку для Kinect, достигли цели. В состав Developer Toolkit вошел инструмент под названием Kinect Studio.

Kinect Studio можно рассматривать как отладчик или эмулятор. Его роль чрезвычайно проста, помочь вам записать данные получаемые от сенсора и направить их в ваше приложение. Вы можете снова и снова проигрывать записанные данные, а при желании сохранить их в файл и вернуться к отладке через некоторое время.

Чтобы начать работать с Kinect Studio, вы подключаетесь к приложению и выбираете сенсор. Теперь все готово к тому, чтобы начать запись (recording) данных сенсора или инжекцию (injection) сохраненных данных.

Оцените статью