当前位置: 代码迷 >> 综合 >> OpenNI:深度图显示方法
  详细解决方案

OpenNI:深度图显示方法

热度:87   发布时间:2024-01-13 05:54:09.0

OpenNI的深度图显示有主要有两种方法:

1.深度值直接赋值方法(同上一篇):

缺点:深度图层次不明显,主要由于位移操作导致

#include <stdlib.h>
#include <iostream>
#include <string>#include <XnCppWrapper.h>
#include "opencv/cv.h"
#include "opencv/highgui.h"using namespace std;
using namespace cv;void CheckOpenNIError( XnStatus result, string status )
{ if( result != XN_STATUS_OK ) cerr << status << " Error: " << xnGetStatusString( result ) << endl;
}int main( int argc, char** argv )
{XnStatus result = XN_STATUS_OK;  xn::DepthMetaData depthMD;xn::ImageMetaData imageMD;//OpenCVIplImage*  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);char key=0;//【2】// context xn::Context context; result = context.Init(); CheckOpenNIError( result, "initialize context" );  // creategenerator  xn::DepthGenerator depthGenerator;  result = depthGenerator.Create( context ); CheckOpenNIError( result, "Create depth generator" );  xn::ImageGenerator imageGenerator;result = imageGenerator.Create( context ); CheckOpenNIError( result, "Create image generator" );//【3】//map mode  XnMapOutputMode mapMode; mapMode.nXRes = 640;  mapMode.nYRes = 480; mapMode.nFPS = 30; result = depthGenerator.SetMapOutputMode( mapMode );