OpenNI结合OpenCV显示Kinect彩色、深度及融合图像
来源:互联网 发布:mac adobe设置中文版 编辑:程序博客网 时间:2024/03/28 21:18
平台:win7 32、VS2010、OpenNI1.5.4.0、OpenCV2.4.9
图片在最后(注意图片中的日光灯,匹配的较好)
全部代码如下:
#include <stdlib.h>#include <iostream>#include <string>#include <XnCppWrapper.h>#include <opencv2/opencv.hpp>using namespace std;using namespace xn;using namespace cv;void CheckOpenNIError(XnStatus eResult,string sStatus)//检测错误并返回错误的函数{if(eResult != XN_STATUS_OK)cout << sStatus << "Error: " << xnGetStatusString(eResult) << endl;//P53}int main(){XnStatus eResult = XN_STATUS_OK;ImageMetaData imageMD;DepthMetaData depthMD;namedWindow("Color Image");namedWindow("Depth Image");namedWindow("Fusion Image");Context mContext;//初始化上下文对象eResult = mContext.Init();CheckOpenNIError(eResult,"Initialize context");ImageGenerator mImageGenerator;//创建彩色图像生产节点eResult = mImageGenerator.Create(mContext);CheckOpenNIError(eResult,"Create image generator");DepthGenerator mDepthGenerator;//创建深度图像生产节点eResult = mDepthGenerator.Create(mContext);CheckOpenNIError(eResult,"Create depth generator");XnMapOutputMode mapMode;//设置图像分辨率mapMode.nXRes = 320;mapMode.nYRes = 240;mapMode.nXRes = 30;eResult = mImageGenerator.SetMapOutputMode(mapMode);eResult = mDepthGenerator.SetMapOutputMode(mapMode);mDepthGenerator.GetAlternativeViewPointCap().SetViewPoint(mImageGenerator); //深度图像视角转换成彩色图象视角eResult = mContext.StartGeneratingAll();//开始产生数据while(true){eResult = mContext.WaitAndUpdateAll();if(eResult == XN_STATUS_OK){mImageGenerator.GetMetaData(imageMD);Mat cvRGBImage(imageMD.FullYRes(),imageMD.FullXRes(),CV_8UC3,(char*) imageMD.Data());Mat cvBGRImage;cvtColor(cvRGBImage,cvBGRImage,CV_RGB2BGR); //整幅图像颜色转换,因为opencv中采用BGR方式排列imshow("Color Image",cvBGRImage);mDepthGenerator.GetMetaData(depthMD);Mat cvDepthImage16UC1(depthMD.FullYRes(), depthMD.FullXRes(), CV_16UC1,(char*) depthMD.Data());Mat cvDepthImage8UC1;cvDepthImage16UC1.convertTo(cvDepthImage8UC1,CV_8UC1,255.0/(depthMD.ZRes()));//格式转换imshow("Depth Image",cvDepthImage8UC1);Mat cvDepthImage8UC3;cvtColor(cvDepthImage8UC1,cvDepthImage8UC3,CV_GRAY2BGR);//格式转换Mat cvFusionImage;cvFusionImage = 0.5*cvBGRImage + 0.5*cvDepthImage8UC3;//图像融合imshow("Fusion Image",cvFusionImage);waitKey(30);}}mContext.StopGeneratingAll();//停止产生数据mContext.Shutdown();return 0;}
彩色图象:
深度图像:
视角校正后的融合图像:
0 0
- OpenNI结合OpenCV显示Kinect彩色、深度及融合图像
- kinect,openni,opencv 获取并显示深度与彩色图像
- OpenNI2显示深度、彩色及融合图像
- OpenNI2显示深度、彩色及融合图像
- Kinect开发教程八:OpenNI2显示深度、彩色及融合图像
- Kinect开发教程八:OpenNI2显示深度、彩色及融合图像
- Kinect+OpenNI学习笔记之4(OpenNI获取的图像结合OpenCV显示)
- Kinect开发教程二:OpenNI读取深度图像与彩色图像并显示
- Kinect开发教程二:OpenNI读取深度图像与彩色图像并显示
- Kinect开发教程二:OpenNI读取深度图像与彩色图像并显示
- 基于Kinect-OpenNI-OpenCV-OpenGL的环境三维重构 windows vs2008 深度彩色图像
- OpenCV--鼠标响应Kinect彩色图像显示深度信息
- ROS使用openni获取Kinect彩色图像和深度图像
- kinect_openni学习1-OpenNI2显示深度、彩色及融合图像
- Heresy透過 OpneNI 合併 Kinect 深度以及彩色影像資料(Kinect开发教程二:OpenNI读取深度图像与彩色图像并显示)
- Heresy透過 OpneNI 讀取 Kinect 深度影像資料(Kinect开发教程二:OpenNI读取深度图像与彩色图像并显示)
- ubuntu 14.04 +Kinect+ openNI+ openCV+ Sensorkinect 配置 +获取深度图像及相关问题
- 如何使用Kinect显示彩色图像和深度图像。
- 输出集合的子集---二进制法
- 串口读写数据错误
- HDU 3177 Crixalis's Equipment(贪心)
- μCOS消息队列的使用
- MySQL高级技术-事务处理及锁
- OpenNI结合OpenCV显示Kinect彩色、深度及融合图像
- POJ 1751 Highways (最小生成树+记录路径)
- Android版本和API level之间的对应关系
- NFS服务器配置
- 画笔设置模式 paint.setXfermode
- Linux多线程,线程的分离与结合
- Android之Fragment通信
- 函数对象
- Android中dip、dp、px和sp