2013-11-26 2 views
0

Я пытаюсь сделать одну работу Asus Xtion в java с opencv 2.4.7 и OpenNI (у меня оба установлены).OpenCV OpenNI Java - CV_CAP_OPENNI не существует

Моя проблема заключается в том, что флаги doens't работа ..

CV_CAP_OPENNI

CV_CAP_OPENNI_DEPTH_MAP

CV_CAP_OPENNI_POINT_CLOUD_MAP

CV_CAP_OPENNI_DISPARITY_MAP

CV_CAP_OPENNI_DISPARITY_MAP_32F

CV_CAP_OPENNI_VALID_DEPTH_MASK

Никто не работает, почему?

ответ

0

Core.getBuildInformation запроса() http://docs.opencv.org/java/org/opencv/core/Core.html#getBuildInformation()

, чтобы увидеть, если ваши OpenCV ЛИЭСЫ были построены с OpenNI поддержки (вероятно, нет, если вы используете сборные те)

весьма вероятно, что у вас есть перекомпилировать opencv (с установленным openni sdk) для его достижения.

+0

Спасибо. И как я могу скомпилировать новый .jar-файл для моего проекта java? Если я сделаю cmake, он произведет файл в jar? –

+0

вы запустили cmake-gui для создания make-файлов/проектов, выберите BUILD_opencv_java, -jar файл будет построен с другими двоичными файлами – berak

+0

Я могу построить с любым компилятором? –

0

Мое предположение, что OpenWV Java Wrapper может не поддерживать OpenNI. Оболочки Java и Python обычно ограничены по сравнению с API C++. Обычно основные функции есть, но более новые/экспериментальные части делают это позже.

Для быстрого прототипирования в Java я часто использую Processing. Это также можно использовать как библиотеку в eclipse. Есть две красивые обертки, которые могут помочь: SimpleOpenNI для подключения к вашему датчику Xtion (я тестировал один, и он отлично работает) и OpenCV Processing wrapper.

SimpleOpenNI

SimpleOpenNI SimpleOpenNI

OpenCV Обработка

OpenCV Processing

Если вы не хотите использовать SimpleOpenNI, вы можете использовать OpenNI Java обертку PrimeSense (который поставляется с OpenNI Установите для OpenNI 1.5.x или this wrapper для OpenNI 2.x). Когда вы получите изображения глубины/rgb, должны быть способы их преобразования в OpenCV Mat экземпляры для дальнейшей обработки.

+0

Я не хочу использовать Обработка, я много использовал, но на этот раз я не хочу его использовать. OpenNI поддерживает java .. Я понял, что основной проблемой недостающей поддержки OpenNI является то, что исходный openCV x не скомпилирован с поддержкой OpenNI. И эта проблема для c/C++ и java. Я попытался скомпилировать opencv с поддержкой openni, но еще не успел:/ –

+0

Я уже открывал OpenCV с поддержкой OpenNI. Попробуйте [эти инструкции] (http://stackoverflow.com/questions/16754631/how-to-install-openni-in-windows-and-visual-studio-2010/16780470#16780470) и дайте мне знать, e удалось скомпилировать OpenCV с поддержкой OpenNI. Легко сделать быстрый тест на C++, но я не пробовал использовать OpenCV OpenNI-поддержку на Java, поэтому не уверен, что он есть или нет. –

+0

Я попытался найти ваше сообщение, но у меня есть следующие проблемы: Проблема с «предупреждением: PrimeSense ...». Пытался внести изменения в «OpenCVFindOpenNI.cmake», но я думаю, что мой текущий opencv 2.4.7 исправил это. Кроме того, я использую OpenNI2, и в вашем сообщении я думаю, что вы использовали старый, а новый не имеет «openni64» и «XnCppWrapper.h». Так много проблем:/ –

0

У меня OpenNI работает с официальными связями Java OpenCV. Мне пришлось перекомпилировать и включить WITH_OPEN_NI, как указано в документации OpenCV, чтобы заставить Kinect работать. Тогда проблема заключалась в том, чтобы получить константы для OpenNI. Кажется, что, как вы сказали, CV_CAP_OPENNI не определен в привязке Java. код выглядит следующим образом:

int CV_CAP_OPENNI = 900; 
    VideoCapture capture = new VideoCapture(CV_CAP_OPENNI); 


    capture.grab(); 
    Mat depthMap = new Mat(); 
    int CV_CAP_OPENNI_DEPTH_MAP = 0; 
    capture.retrieve(depthMap, CV_CAP_OPENNI_DEPTH_MAP); 
    Mat show = new Mat(); 
    depthMap.convertTo(show,CvType.CV_8UC1, 0.05f); 

постоянные значения были извлечены из D: \ OpenCV \ модули \ highgui \ включают \ opencv2 \ highgui \ highgui_c.h Я считаю, что лучший способ сделать это - проверить скрипты python, которые генерируют Java-классы, и включить их в эти константы для создания jar.

Java OpenNI