现在的位置: 首页 > 综合 > 正文

opencv2.3读取kinect深度信息和彩色图像

2013年09月07日 ⁄ 综合 ⁄ 共 1167字 ⁄ 字号 评论关闭

opencv2.3读取kinect深度信息和彩色图像

作者:http://blog.csdn.net/moc062066

opencv2.3可以直接读取kinect的深度信息和彩色图像,但是在编译opencv的时候需要注意一点,具体参考这里

//moc062066
//20111021
//
/*
#include <opencv2/core/core.hpp>        // Basic OpenCV structures (cv::Mat, Scalar)
#include <opencv2/highgui/highgui.hpp>  // OpenCV window I/O
using namespace cv;
*/
#include <opencv2/opencv.hpp>
using namespace cv;

#include <iostream>
using namespace std ;

static void help() {
	cout << "usage:hit any key to quit!" << endl
	     <<  "kinect opening..." << endl ;
}

int main(int argc,char** argv) {
	
	help();

	VideoCapture capture(CV_CAP_OPENNI);

	if ( !capture.isOpened()) {
		cerr << "no device has derected!" << endl ;
		return -1;
	}
	cout << "width" << capture.get( CV_CAP_PROP_FRAME_WIDTH ) << endl
	     << "heigth" << capture.get( CV_CAP_PROP_FRAME_HEIGHT ) << endl; 

	std::string rgb_wnd = "RGB Camera";
	std::string depth_wnd = "Depth Camera";
	namedWindow( rgb_wnd,CV_WINDOW_AUTOSIZE);
	namedWindow( depth_wnd,CV_WINDOW_AUTOSIZE);

	for(;;){
		Mat depthMap ;
		Mat rgbImage ;

		capture.grab();

		//depthMap XYZ in meters (CV_32FC3),xyz就是获取的点云中每一点的空间位置
		capture.retrieve(depthMap,CV_CAP_OPENNI_POINT_CLOUD_MAP);
		
		//color image (CV_8UC3)
		capture.retrieve(rgbImage,CV_CAP_OPENNI_BGR_IMAGE);
			
		imshow(rgb_wnd,rgbImage);
		imshow(depth_wnd,depthMap);

		if ( waitKey(30) >= 0 ) {
			break ;
		}
	}
	return 0 ;
}

结果:

抱歉!评论已关闭.