2013-11-21 83 views
0

我在Visual Studio中的OpenCV 2.4.6写(无OpenNI)一个OpenCV的项目2012使用opencv和kinect primesense相机显示RGB视频帧?

项目采用集成网络摄像头,但现在我想用Kinect的摄像头RGB帧而不是摄像头。

  1. 是否可以在不使用OpenNI的情况下使用Kinect主摄像头?
  2. 我是否需要安装OpenNI并将其链接到OpenCV以及所有使用Prime感应设备使用RGB相机的东西?

目前我正在写下面的代码:

VideoCapture capture(CV_CAP_OPENNI); // I have tried with capture(0), capture(1) 

if(!(capture.isOpened())){ 
    cout << "OPENCV:Cannot open the WebCamera" << endl; 
    return -1; 
} 

而结果是,它不能打开捕获和在这里失败。我对这一切都很陌生,请解释我是否需要安装任何东西或包含任何东西?我已经安装了Prime感应驱动程序。谢谢。

+0

你正在得到什么错误..? – scap3y

+0

没有错误,capture.isopened()是false ....无法打开捕获 – UnresolvedSymbols

回答

1

你可以阅读使用任何的这3种方法Kinect传感器数据,

  1. 微软Kinect的Windows SDK
  2. OpenKinect的libfreenect API
  3. OpenNI + OpenKinect

为了进一步参考,我想引导你到这个话题: How to take kinect video image and depth image with openCV c++?

HTH

+0

感谢您的链接。但是没有任何办法将主摄像头视为网络摄像头,它应该工作吗? – UnresolvedSymbols

+0

不,因为来自Kinect和普通相机的数据格式完全不同。您将需要一个能够正确读取图像的阅读器类。 – scap3y

+0

好的,谢谢!我会安装openNI并使其工作:) – UnresolvedSymbols

0
  1. NO(如果你想VideoCapture capture(CV_CAP_OPENNI);它只是取决于这一点。有libfreenect或如此以及但这是另一个故事..)

  2. 是的(这就是为什么它失败,可能)。

还要检查:cout << cv::getBuildInformation();看,如果你的OpenCV库是建立 openni支持:

Video I/O: 
    ... 
    OpenNI:      NO 
    OpenNI PrimeSensor Modules: NO 

你就必须重建从SRC的OpenCV(安装openni SDK),如果答案是'不'

+0

感谢您的回答。我将不得不安装openNI! – UnresolvedSymbols

+1

lol,@UnresolvedSymbols,nomen est omen – berak

+0

再次,@ scap3y的回答也值得考虑。如果您已经安装了其他任何框架,则更关键的是通过* their * capture方法制作cv :: Mat,而不是使用VideoCapture – berak