OpenNI2获取华硕XtionProLive深度图和彩色图并用OpenCV显示

使用OpenNI2打开XtionProLive时有个问题,彩色图分辨率无论如何设置始终是320*240,深度图倒是可以设成640*480,而OpenNI1.x是可以获取640*480的彩色图的。


OpenNI2获取华硕XtionProLive深度图和彩色图并用OpenCV显示_第1张图片

彩色图


OpenNI2获取华硕XtionProLive深度图和彩色图并用OpenCV显示_第2张图片

配准到彩色图后的深度图


OpenNI2获取华硕XtionProLive深度图和彩色图并用OpenCV显示_第3张图片

1:1融合图



代码:

#include 
#include 
#include 
#include 
#include 

#include "OpenNI.h"

using namespace openni;
using namespace cv;
using namespace std;


int main()
{
	Status rc = STATUS_OK; // OpenNI函数执行结果

	//OpenNI2图
	VideoFrameRef oniDepthImg, oniColorImg;

	//OpenCV图
	Mat cvDepthImg, cvBGRImg, cvFusionImg;

	//初始化OpenNI2
	rc = OpenNI::initialize();

	//打开Kinect或Xtion设备
	Device device;
	const char * deviceURL = openni::ANY_DEVICE;  //设备名
	rc = device.open(deviceURL);

	//创建并打开深度数据流
	VideoStream oniDepthStream; //深度数据流
	rc = oniDepthStream.create(device, SENSOR_DEPTH); //创建深度数据流
	if( STATUS_OK == rc )
	{
		//设置深度视频模式
		VideoMode modeDepth;
		modeDepth.setResolution(320,240/*640,480*/); //分辨率
		modeDepth.setFps(30); //帧率
		modeDepth.setPixelFormat(PIXEL_FORMAT_DEPTH_1_MM); //深度像素格式
		oniDepthStream.setVideoMode(modeDepth);

		oniDepthStream.start(); // 打开深度数据流
		if(STATUS_OK !=  rc)
		{
			cerr << "无法打开深度数据流:"<


环境:

XtionProLive,Win7 32位,VS2010,OpenNI2.1.0,OpenCV2.4.4


源码下载:

http://download.csdn.net/detail/masikkk/7582485


OpenNI2.1下载:

http://download.csdn.net/detail/masikkk/7582489



参考:

Kinect+OpenNI学习笔记之2(获取kinect的颜色图像和深度图像)

Kinect+OpenNI学习笔记之4(OpenNI获取的图像结合OpenCV显示)

Kinect开发教程二:OpenNI读取深度图像与彩色图像并显示

OpenNI2获取华硕XtionProLive深度图和彩色图并用OpenCV显示


你可能感兴趣的:(计算机视觉,OpenCV)