华硕XtionPro类似Kinect,都是体感摄像机,可捕捉深度图和彩色图。
具体參数见:http://www.asus.com.cn/Multimedia/Xtion_PRO_LIVE/specifications/
实验设定的深度图和彩色图大小都是640480,规格上说彩色图支持更大分辨率。实測假设将彩色图设定为更大分辨率则会自己主动改为320240
彩色图
未配准时的深度图
配准到彩色图后的深度图
深度图配准到彩色图后的1:1融合图
彩色图配准到深度图后的1:1融合图
OpenNI中提供4中数据流异步机制:
(1) WaitNoneUpdateAll():不等待流的更新,这样有可能读出来的和上次是同一帧
(2) WaitAndUpdateAll():等待深度和彩色流都更新
(3) WaitAnyUpdateAll():随意流有更新则返回
(4) WaitOneUpdateAll(ProductionNode &node):等待參数指定的流更新
代码:
#include#include #include //OpenCV c函数头文件 #include "opencv/cv.h" #include "opencv/highgui.h" //OpenCV c++函数头文件 #include #include #include #include //OpenNI的头文件 using namespace std; using namespace cv; using namespace xn; // OpenNI的命名空间 int main() { XnStatus result = XN_STATUS_OK; //OpenNI函数的返回结果 DepthMetaData depthMD; //OpenNI深度数据 ImageMetaData imageMD; //OpenNI彩色数据 //c版本号OpenCV //IplImage* imgDepth16u=cvCreateImage(cvSize(640,480),IPL_DEPTH_16U,1); //IplImage* imgRGB8u=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3); //IplImage* depthShow=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); //IplImage* imageShow=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3); //cvNamedWindow("depth",1); //cvNamedWindow("image",1); //c++版本号OpenCV Mat cvDepthImg, cvBGRImg, cvFusionImg; namedWindow("depth"); namedWindow("RGB"); namedWindow("fusion"); // 创建并初始化设备上下文 Context context; result = context.Init(); if (XN_STATUS_OK != result) cerr<imageData,depthMD.Data(),640*480*2); //cvConvertScale(imgDepth16u,depthShow,255/4096.0,0); //memcpy(imgRGB8u->imageData,imageMD.Data(),640*480*3); //cvCvtColor(imgRGB8u,imageShow,CV_RGB2BGR); //cvShowImage("depth", depthShow); //cvShowImage("image",imageShow); } } context.StopGeneratingAll(); //停止数据流 context.Shutdown(); //关闭设备上下文 destroyWindow("depth"); destroyWindow("RGB"); destroyWindow("fusion"); //cvDestroyWindow("depth"); //cvDestroyWindow("image"); //cvReleaseImage(&imgDepth16u); //cvReleaseImage(&imgRGB8u); //cvReleaseImage(&depthShow); //cvReleaseImage(&imageShow); return 0; }
环境配置:
华硕XtionProLive,Win7 32位系统,VS2010,OpenCV2.4.4,OpenNI1.5.2.23
源代码下载:
http://download.csdn.net/detail/masikkk/7581283
OpenNI1.5 + NITE + Sensor下载:
http://download.csdn.net/detail/masikkk/7581339
參考:
Kinect+OpenNI学习笔记之2(获取kinect的颜色图像和深度图像)
Kinect+OpenNI学习笔记之4(OpenNI获取的图像结合OpenCV显示)
Kinect开发教程二:OpenNI读取深度图像与彩色图像并显示
OpenNI1.5获取华硕XtionProLive深度图和彩色图并用OpenCV显示
Original: https://www.cnblogs.com/mthoutai/p/7402910.html
Author: mthoutai
Title: OpenNI1.5获取华硕XtionProLive深度图和彩色图并用OpenCV显示
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/552802/
转载文章受原作者版权保护。转载请注明原作者出处!