2013-11-26 105 views
0

我想使用opencv 2.4.7和OpenNI(我已經安裝)在java中使一個華碩Xtion工作。OpenCV OpenNI Java - CV_CAP_OPENNI不存在

我的問題是標誌好好嘗試一下工作..

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

謝謝。 以及我如何爲我的java項目編譯一個新的.jar文件? 如果我做一個cmake它會產生一個jar文件? –

+0

你會運行cmake-gui來生成makefiles/projects,選擇BUILD_opencv_java, - 該jar文件將與其他二進制文件一起構建 – berak

+0

我可以使用任何編譯器構建? –

0

我的猜測是OpenCV Java Wrapper可能不支持OpenNI。 與C++ API相比,Java和Python包裝通常是有限的。 通常核心功能在那裏,但更新的/實驗部分在稍後進行。

對於Java中的快速原型設計,我使用Processing很多。 這也可以在eclipse中用作庫。 有兩個很好的包裝可以幫助:SimpleOpenNI連接到您的Xtion傳感器(我測試過一個,它工作正常)和OpenCV Processing wrapper

SimpleOpenNI

SimpleOpenNI SimpleOpenNI

OpenCV的處理

OpenCV Processing

如果你不想使用SimpleOpenNI,您可以使用PrimeSense的的OpenNI Java包裝(附帶了OpenNI對於OpenNI 2.x,安裝OpenNI 1.5.x或this wrapper)。獲得深度/ RGB圖像後,應該有方法將它們轉換爲OpenCV Mat實例以供進一步處理。

+0

我不想使用處理,我用了很多,但這次我不想使用它。 OpenNI支持java .. 我發現缺少OpenNI支持的主要問題是原始openCV x沒有用OpenNI支持編譯。 而這個問題是針對c/C++和java的。 我試圖用openni支持來編譯opencv,但是還沒有成功:/ –

+0

我之前已經用OpenNI支持構建了OpenCV。請嘗試[這些說明](http://stackoverflow.com/questions/16754631/how-to-install-openni-in-windows-and-visual-studio-2010/16780470#16780470),讓我知道如果你' e自己設法用OpenNI支持編譯OpenCV。在C++中做一個快速測試會很容易,但是我沒有嘗試過在Java中使用OpenCV OpenNI支持,所以不確定它是否存在。 –

+0

我試圖讓你的帖子,但我有這些問題: 仍然有「警告:PrimeSense ...」的問題。 試圖做出「OpenCVFindOpenNI.cmake」的變化,但我認爲我目前的opencv 2.4.7已經修復。 此外,我使用OpenNI2,在你的文章中,我認爲你使用了舊的,而新的沒有「openni64」和「XnCppWrapper.h」。 所以很多問題:/ –

0

我得到OpenNI與官方OpenCV Java綁定一起工作。 我不得不重新編譯並啓用WITH_OPEN_NI,就像在OpenCV文檔中所述,讓Kinect工作。然後,問題是獲得OpenNI的常量。看起來像你說的那樣,CV_CAP_OPENNI沒有在Java綁定中定義。 的代碼看起來是這樣的:從d提取

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); 

常數值:\的OpenCV \模塊\ highgui \包括\ opencv2 \ highgui \ highgui_c。h 我相信最好的辦法是檢查生成Java類的python腳本,並讓它們包含那些生成jar的常量。

Java OpenNI