Kinect 开发:取得红外图像

 

    int I_IrThreshold=12;
     IplImage* Img_Ir16U=cvCreateImage(cvSize(640,480),IPL_DEPTH_16U,1);
 IplImage* Img_IrTurn=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
 IplImage* Img_IrBgr=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
 IplImage* Img_IrTmp=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
 xn::IRMetaData MD_Ir;
 // context  
    xn::Context MyContext; 
    MyContext.Init();
 // creategenerator   
 xn::IRGenerator G_Ir;
    G_Ir.Create(MyContext);
  //map mode   
    XnMapOutputMode MyMapMode; 
    MyMapMode.nXRes = 640;  
    MyMapMode.nYRes = 480; 
    MyMapMode.nFPS = 30; 
    G_Ir.SetMapOutputMode( MyMapMode );
 MyContext.StartGeneratingAll();  
 
    MyContext.WaitNoneUpdateAll(); 
 int flag=0;
 cvNamedWindow("Img_IrTurn",1);
 cvCreateTrackbar( "Thresh", "Img_IrTurn", &I_IrThreshold, 100, 0 );
 while( !MyContext.WaitNoneUpdateAll( ) ) 
    {  
        //get meta data 
  G_Ir.GetMetaData(MD_Ir);
 
        //OpenCV output  
  memcpy(Img_Ir16U->imageData,MD_Ir.Data(),640*480*2);
  cvConvertScale(Img_Ir16U,Img_IrTurn,255/255.,0);
  //模糊操作
  
  if(flag>2){cvCopyImage(Img_IrTurn,Img_IrBgr);flag=-1;}
  if(flag>=0)flag++;
  cvShowImage("1",Img_IrTurn);
  cvAbsDiff(Img_IrTurn,Img_IrBgr,Img_IrTurn);
  //ir二值化
  cvThreshold(Img_IrTurn,Img_IrTurn,I_IrThreshold,255,CV_THRESH_BINARY);
  cvShowImage("Img_IrTurn",Img_IrTurn);
  cvWaitKey(10);
 }
 cvDestroyAllWindows();  
    MyContext.StopGeneratingAll();
    MyContext.Shutdown();

转载于:https://www.cnblogs.com/tokushima/archive/2012/12/04/2801728.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值