我正在尝试使用opencv 2.4.7和OpenNI (我都安装了)在java中运行一个Asus Xtion。
我的问题是旗帜不起作用..
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
没有人在工作,为什么?
发布于 2013-11-27 00:55:11
查询Core.getBuildInformation() http://docs.opencv.org/java/org/opencv/core/Core.html#getBuildInformation()
查看您的opencv库是否支持openni (如果您使用的是预制的库,则可能不是)
很可能,您必须重新编译opencv (安装了openni sdk )才能实现它。
发布于 2013-11-27 08:01:10
我猜测OpenCV Java包装器可能不支持OpenNI。与c++ API相比,Java和Python包装器通常是有限的。通常核心功能都在那里,但新的/实验性的部分稍后才会出现。
为了在Java语言中快速构建原型,我经常使用Processing。这也可以作为eclipse中的库使用。有两个很好的包装器可以帮助你:连接到你的Xtion传感器的SimpleOpenNI (我已经用一个进行了测试,它工作得很好)和OpenCV Processing wrapper。
SimpleOpenNI


OpenCV处理

如果你不想使用SimpleOpenNI,你可以使用PrimeSense的OpenNI Java包装器(它随OpenNI Install for OpenNI 1.5.x或this wrapper for OpenNI 2.x一起提供)。一旦你得到了深度/rgb图像,就应该有办法将它们转换成OpenCV Mat实例进行进一步处理。
发布于 2014-03-07 11:02:28
我让OpenNI使用官方的OpenCV Java绑定。我不得不重新编译并启用WITH_OPEN_NI,就像OpenCV文档中提到的让Kinect正常工作一样。然后,问题是如何获取OpenNI的常量。看起来,就像你说的,CV_CAP_OPENNI并没有在Java binding中定义。代码如下所示:
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\modules\highgui\include\opencv2\highgui\highgui_c.h中提取的,我认为最好的方法是检查生成Java类的python脚本,并使它们包含这些常量到生成的jar中。

https://stackoverflow.com/questions/20223034
复制相似问题