Подтвердить что ты не робот

Как я могу получить доступ к Kinect с помощью Java?

В настоящее время я нахожусь в курсе Computer Vision, и для моего финального проекта я собираюсь сделать небольшую игру, которая взаимодействует с Kinect.

Теперь я хочу сделать эту игру на Java, поскольку я никогда не решался сделать игру раньше, и мне очень нравится этот язык. Но я не могу найти способ просто получить доступ к данным Depth (мне просто нужно упаковать их в некоторую структуру Java Data) и RGB-данные (та же идея).

Сейчас у меня есть способ "поговорить" с Kinect. Я выполнил этот учебник и могу обнаружить kinect с помощью команды glview в терминале.

У меня есть вещь под названием Processing, которая пообещала быть библиотекой Java, чтобы я мог использовать Kinect, но использует ее собственный язык, который "построен" используя Java, так что это не действительно Java, что означает, что я не могу использовать все графические интерфейсы и обычные функции Java.

Что я хочу сделать, так или иначе назовите import random.Kinect.code; в верхней части Java-программы, которая позволяет мне использовать самые основные функции Kinect, такие как getDepth() или getRGB() и делать все остальное на Java.

Кто-нибудь знает, как я могу это сделать? (BTW Я бегу MAC OSX Lion)

4b9b3361

Ответ 1

Если вы используете Обработку, я рекомендую использовать одну из доступных оболочек:

Оба документа хорошо документированы и содержат множество полезных примеров.

simpleOpenNI sample

Ответ 2

У меня была точно такая же проблема. Я хотел использовать Kinect в Java для моего исследования Computer Vision, и у меня был Mac OSX Lion, как вы. Решение, которое я нашел, - запустить виртуальную копию Windows 7 на моем Mac (используя VMWare или Parallels или Microsoft HyperV), а затем использовать open source J4K Java для библиотеки Kinect, которая является привязкой Java для Kinect SDK с использованием Java Native Interface (JNI). Конечно, вы также можете использовать эту библиотеку с открытым исходным кодом непосредственно на компьютерах под управлением Windows.

В J4K Java-библиотеке для Kinect также есть руководство по написанию приложения на основе kinect всего за 10 строк кода Java.

Также есть несколько примеров исходного кода, которые показывают, как читать данные глубины, видео и скелета с Kinect и использовать их в Java-классах. Вы также можете использовать несколько Kinects, анимированные аватары и другие примеры. Ссылка на примеры исходного кода здесь.

Снимок экрана с открытым исходным кодом Kinect Viewer, который полезен для приложений Computer Vision, таких как ваш, находится ниже: enter image description here

Я надеюсь, что эта информация помогла.

Ответ 3

Я дам вам некоторые идеи, но, признаюсь, я не пытался их использовать с Kinect.
Вы можете задать вопрос по категориям "Как получить доступ к некоторому оборудованию через Java". В представленном нами учебном пособии представлены библиотеки для доступа к Kinect и даже обертки для Python.
Что вы можете сделать, так это то, как код Python реализовал оболочки, и использовать JNI/JNA для создания собственных оберток.
Кроме того, я просмотрел проект JNect, упомянутый здесь в другом ответе, опубликованном @npinti.
Плагин eclipse состоит из двух частей:
код JNI, который обертывает строгий SDK-код и код Rip-кода Ecipse для самого модуля eclipse.
Я бы порекомендовал вам игнорировать часть RCP Eclipse и сосредоточиться на реализации JNI в качестве ссылки на то, что вам нужно для разработки собственной JNI-обертки.
Даже если это реализация на базе Windows (т.е. Kinect SDK работает с окнами, и вам, например, нужно запустить свой код на Mac) - я думаю, что, читая их код + некоторые учебники JNI + оболочки python по ссылке вы предоставили вам понять, как создать обертку JNI в библиотеку, представленную в указанной вами ссылке.
Кроме того, рассмотрите возможность использования JNA, а не JNI как способ общения с оборудованием, мне становится проще.
Один из последних вариантов - возможно, использовать Java Script Engine и вызывать код Python (оболочки python) из вашего java-vode - не уверен, как многое вам поможет, но вы можете дать ему шанс.