注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BeyondEgo

Welcome to Winsolider's yard! 超越自我,谁与争锋?

 
 
 

日志

 
 
关于我

本博为记事、畅聊、交友博客,邀你共同探讨人生、探讨成长,广交天下有志之士!愿与有相同兴趣爱好的你,共同学习、一起成长、收获喜悦!

网易考拉推荐

前文程序:kinect_opencv_image  

2011-09-27 22:50:35|  分类: 程序员 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

程序功能:从Kinect XBOX360 读取深度图

// kinect_opencv_image.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


//int _tmain(int argc, _TCHAR* argv[])
//{
// return 0;
//}

 

#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 eResult, string sStatus )
 {
  if( eResult != XN_STATUS_OK )
   cerr << sStatus << " Error: " << xnGetStatusString( eResult ) << endl;
 }
 
 int _tmain(int argc, _TCHAR* argv[])//int test( int argc, char** argv )
 {
  XnStatus eResult = XN_STATUS_OK; 
  // 1. initial val
  xn::DepthMetaData m_DepthMD;
  xn::ImageMetaData m_ImageMD;
  // for opencv Mat
  Mat  m_depth16u( 480,640,CV_16UC1);
  Mat  m_rgb8u( 480,640,CV_8UC3);
  Mat  m_DepthShow( 480,640,CV_8UC1);
  Mat  m_ImageShow( 480,640,CV_8UC3);
  cvNamedWindow("depth");
  cvNamedWindow("image");
  char key=0;
 
  // 2. initial context
  xn::Context mContext;
  eResult = mContext.Init();
  CheckOpenNIError( eResult, "initialize context" ); 
 
  // 3. create depth generator 
  xn::DepthGenerator mDepthGenerator; 
  eResult = mDepthGenerator.Create( mContext );
  CheckOpenNIError( eResult, "Create depth generator" ); 
 
  // 4. create image generator
  xn::ImageGenerator mImageGenerator;
  eResult = mImageGenerator.Create( mContext );
  CheckOpenNIError( eResult, "Create image generator" );
 
  // 5. set map mode 
  XnMapOutputMode mapMode;
  mapMode.nXRes = 640; 
  mapMode.nYRes = 480;
  mapMode.nFPS = 30;
  eResult = mDepthGenerator.SetMapOutputMode( mapMode ); 
  eResult = mImageGenerator.SetMapOutputMode( mapMode ); 
 
  // 6. correct view port 
  mDepthGenerator.GetAlternativeViewPointCap().SetViewPoint( mImageGenerator );
 
  // 7. tart generate data 
  eResult = mContext.StartGeneratingAll(); 
 
  // 8. read data 
  eResult = mContext.WaitNoneUpdateAll(); 
  while( (key!=27) && !(eResult = mContext.WaitNoneUpdateAll( ))  )
  { 
   // 9a. get the depth map 
   mDepthGenerator.GetMetaData(m_DepthMD);
   memcpy(m_depth16u.data,m_DepthMD.Data(),640*480*2);
   // 9b. get the image map 
   mImageGenerator.GetMetaData(m_ImageMD);
   memcpy(m_rgb8u.data,m_ImageMD.Data(),640*480*3);
   m_depth16u.convertTo(m_DepthShow,CV_8U,255/2096.0);
   cvtColor(m_rgb8u,m_ImageShow,CV_RGB2BGR);
   imshow("depth", m_DepthShow);
   imshow("image", m_ImageShow);
  
   key=cvWaitKey(20);
  }
 
  // 10. stop 
  mContext.StopGeneratingAll();
  mContext.Shutdown(); 
  return 0;
 }

 

前文链接:http://quandb2007.blog.163.com/blog/static/41878875201182763423825/

欢迎转载,请注明出处,谢谢!

  评论这张
 
阅读(460)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017