Kinect SDK提取彩色像素

#include <iostream>
using namespace std;

#include <Windows.h>
#include "MSR_NuiApi.h"
//#include "highgui.h"

int main(int argc,char **argv)
{
// IplImage *img;
// CvScalar s;
// img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);

HRESULT hr = NuiInitialize( NUI_INITIALIZE_FLAG_USES_COLOR );
if ( FAILED( hr ) )
{
cout<<"NuiInitialize failed"<<endl;
return hr;
}

HANDLE h1=CreateEvent(NULL,TRUE,FALSE,NULL);
HANDLE h2=NULL;

hr=NuiImageStreamOpen(NUI_IMAGE_TYPE_COLOR,NUI_IMAGE_RESOLUTION_640x480,0,4,h1,&h2);
if (hr != S_OK)
{
cout<<"NuiImageStreamOpen failed"<<endl;
return hr;
}

while(1)
{
WaitForSingleObject(h1,INFINITE);
const NUI_IMAGE_FRAME *pImageFrame = NULL;
hr=NuiImageStreamGetNextFrame(h2,0,&pImageFrame);
if ( hr != S_OK )
{
cout<<"Get Image Frame Failed"<<endl;
continue;
}

INuiFrameTexture *pTexture=pImageFrame->pFrameTexture;
NUI_LOCKED_RECT LockedRect;
pTexture->LockRect(0,&LockedRect,NULL,0);
if ( LockedRect.Pitch != 0 )
{
BYTE *pBuffer=(BYTE*)LockedRect.pBits;
pBuffer+=(200+399*640)*4;
cout<<"(200,400) pix is:";
cout<<" r:"<<pBuffer[2];
cout<<" g:"<<pBuffer[1];
cout<<" b:"<<pBuffer[0];
cout<<endl;
/*
for (int i=0;i<640;i++)
{
for (int j=0;j<480;j++)
{
s=cvGet2D(img,i,j);
pBuffer=(BYTE*)((j+640*i)*4);
s.val[0]=pBuffer[0];
s.val[1]=pBuffer[1];
s.val[2]=pBuffer[2];
cvSet2D(img,i,j,s);
}
}

cvNamedWindow("image");
cvShowImage("image",img);
*/
}
else
{
cout<<"_______"<<endl;
}
NuiImageStreamReleaseFrame(h2,pImageFrame);

}

NuiShutdown();
// cvDestroyAllWindows();
// cvReleaseImage(&img);
return 0;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值