資源簡介
kinect獲取彩色數據并用圖片形式進行保存

代碼片段和文件信息
#include“opencv2\opencv.hpp“
#include
#include//Kinect?Header?files
#pragma?comment(lib“kinect20.lib“)
using?namespace?cv;
//Safe?release?for?interfaces
template
inline?void?SafeRelease(Interface?*&?pInterfaceToRelease)
{
if?(pInterfaceToRelease?!=NULL)
{
pInterfaceToRelease->Release();
pInterfaceToRelease=NULL;
}
}
class?Kinect
{
public:
static?const?int??cColorWidth=1920;
static?const?int??cColorHeight=1080;
int?i;
Kinect();
~Kinect();
HRESULT??InitKinect();//初始化Kinect
void?????Update();//更新數據
void?????ProcessColor(RGBQUAD*?pBufferint?nWidthint?nHeight);//處理得到的數據
private:
IKinectSensor*???????m_pKinectSensor;//Current?Kinect
IColorframeReader*???m_pColorframeReader;//Color?reader
RGBQUAD*?????????????m_pColorRGBX;
};
Kinect::Kinect()
{
i?=?0;?
m_pKinectSensor=NULL;
m_pColorframeReader=NULL;
m_pColorRGBX=new?RGBQUAD[cColorWidth?*?cColorHeight];//create?heap?storage?for?colorin?
}??????????????????????????????????????????????????????????//?pixel?data??in?RGBX?format
Kinect::~Kinect()
{
if?(m_pColorRGBX)
{
delete?[]?m_pColorRGBX;
m_pColorRGBX=NULL;
}
SafeRelease(m_pColorframeReader);//done?with?color?frame?reader
if?(m_pKinectSensor)
{
m_pKinectSensor->Close();//close?the?Kinect?Sensor
}
SafeRelease(m_pKinectSensor);
}
HRESULT?Kinect::InitKinect()
{
HRESULT?hr;
hr=GetDefaultKinectSensor(&m_pKinectSensor);
if?(FAILED(hr))
{
return?hr;
}
if?(m_pKinectSensor)
{
//Initialize?the?Kinect?and?get?the?color?reader
IColorframeSource*?pColorframeSource=NULL;
hr=m_pKinectSensor->Open();
if?(SUCCEEDED(hr))
{
hr=m_pKinectSensor->get_ColorframeSource(&pColorframeSource);
}
if?(SUCCEEDED(hr))
{
hr=pColorframeSource->OpenReader(&m_pColorframeReader);
}
SafeRelease(pColorframeSource);
}
if?(!m_pKinectSensor||FAILED(hr))
{
printf(“No?ready?Kinect?found!\n“);
return?E_FAIL;
}
return?hr;
}
void?Kinect::Update()
{
if?(!m_pColorframeReader)
{
return;
}
IColorframe*?pColorframe=NULL;
HRESULT?hr=m_pColorframeReader->AcquireLatestframe(&pColorframe);
if?(SUCCEEDED(hr))
{
iframeDescription*?pframeDescription=NULL;
int?nWidth=0;
int?nHeight=0;
ColorImageFormat?imageFormat=ColorImageFormat_None;
UINT?nBufferSize=0;
????RGBQUAD*?pBuffer=NULL;
if?(SUCCEEDED(hr))
{
hr=pColorframe->get_frameDescription(&pframeDescription);
}
if?(SUCCEEDED(hr))
{
hr=pframeDescription->get_Width(&nWidth);
}
if?(SUCCEEDED(hr))
{
hr=pframeDescription->get_Height(&nHeight);
}
if?(SUCCEEDED(hr))
{
hr=pColorframe->get_RawColorImageFormat(&imageFormat);
}
if?(SUCCEEDED(hr))
{
if?(imageFormat==ColorImageFormat_Bgra)
{
hr=pColorframe->AccessRawUnderlyingBuffer(&nBufferSizereinterpret_cast(&pBuffer));
}
else?if?(m_pColorRGBX)
{
pBuffer=m_pColorRGBX;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4077??2015-12-11?10:30??kinect獲取彩色數據并用圖片形式進行保存\m.cpp
?????文件????????401??2015-12-11?10:47??kinect獲取彩色數據并用圖片形式進行保存\readMe.txt
?????目錄??????????0??2015-12-11?10:36??kinect獲取彩色數據并用圖片形式進行保存
-----------?---------??----------?-----??----
?????????????????4478????????????????????3
- 上一篇:高數據率水聲通信研究進展
- 下一篇:數字電子技術康華光第五版答案
評論
共有 條評論