資源簡介
或許大家的第一個問題就是詢問該怎樣使用Kinect來獲取顏色信息圖和深度信息圖呢?這里就Kinect+OpenNI獲取深度圖和顏色圖實驗來回答這個問題 。

代碼片段和文件信息
#include?
#include??//包含OpenNI的頭文件
using?namespace?xn;//使用OpenNI庫中的命名空間
//全局的OpenNI?object
XnStatus?g_status;
Context?g_context;
ImageGenerator?g_image_generator;
DepthGenerator?g_depth_generator;
bool?g_has_image_generator?=?true;
//全局的Qt?object
QGraphicsPixmapItem?*g_image_map;
QGraphicsPixmapItem?*g_depth_map;
//CTimer類的定義
class?CTimer?:?public?Qobject
{
public:
????void?start()?{
????????g_status?=?g_context.StartGeneratingAll();//開啟設備讀取數據的開關
????????if(g_status?==?XN_STATUS_OK)?{
????????????startTimer(33);//使用startTimer()啟動定時器,每當時間到時會自動調用timerEvent()函數
????????}
????????else?{
????????????QMessageBox::critical(NULL?“Create?Data?Error!“?xnGetStatusString(g_status));//顯示創建數據失敗,該消息框沒有父窗口
????????}
????}
private:
????void?timerEvent(QTimerEvent?*)?{
????????g_context.WaitAndUpdateAll();//更新數據
????????//顏色數據
????????if(g_has_image_generator)?{
????????????ImagemetaData?image_map;
????????????g_image_generator.GetmetaData(image_map);
????????????//為g_image_map設置圖片,圖片的數據來源于外部硬件設備
????????????g_image_map->setPixmap(QPixmap::fromImage(QImage(image_map.Data()?image_map.XRes()
?????????????????????????????????????????????????????????image_map.YRes()?QImage::Format_RGB888)));
????????}
????????//深度數據
????????DepthmetaData?depth_map;
????????g_depth_generator.GetmetaData(depth_map);
????????XnDepthPixel?max_depth_value?=?depth_map.ZRes();
????????QImage?depth_img(depth_map.XRes()?depth_map.YRes()?QImage::Format_ARGB32);//格式為ARGB32型的
????????for(unsigned?int?i?=?0;?i?????????????for(unsigned?int?j?=?0;?j?????????????{
????????????????XnDepthPixel?depth_value_ij?=?depth_map(i?j);//獲取x,y處的坐標值
????????????????if(depth_value_ij?==?0)?{
????????????????????depth_img.setPixel(i?j?qRgba(0?0?0?0));
????????????????}//如果捕捉不到深度信息,則將其設置為0
????????????????else?{
????????????????????float?fscale?=?1.0f*depth_value_ij/max_depth_value;//當前深度的比例因子
????????????????????depth_img.setPixel(i?j?qRgba(255*(1-fscale)?0?255*fscale?255*(1-fscale)));
????????????????}
????????????}
????????g_depth_map->setPixmap(QPixmap::fromImage(depth_img));
????}
};
int??main(int?argc?char?**argv)
{
????QApplication?app(argc?argv);
????g_status?=?g_context.Init();//context初始化
????if(g_status?!=?XN_STATUS_OK)?{
????????QMessageBox::critical(NULL?“Context?Initial?Error!“?xnGetStatusString(g_status));
????????return?-1;
????}
???//?g_context.SetGlobalMirror(true);//設置全局鏡像就像照鏡子一樣,與設置為false時的2張圖片鏡像
????XnMapOutputMode?xmode;//定義圖像的輸出模式
????xmode.nXRes?=?640;//x方向分辨率
????xmode.nYRes?=?480;//y方向分辨率
????xmode.nFPS?=?30;//幀率
????//設置顏色節點屬性
????g_status?=?g_image_generator.Create(g_context);
????if(g_status?!=?XN_STATUS_OK)?{
????????QMessageBox::critical(NULL?“Image?map?create?failed“?xnGetStatusString(g_status));
????????g_has_image_generator?=?false;
????}
????if(?g_has_image_generator?)?{
????????g_status?=?g_image
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????494639??2012-09-27?23:46??Kinect+OpenNI學習筆記之2(獲取kinect的顏色圖像和深度圖像).pdf
?????文件?????213940??2012-09-27?21:48??qt_viewer\debug\main.obj
?????文件??????53248??2012-09-27?21:48??qt_viewer\debug\qt_viewer.exe
?????文件?????502024??2012-09-27?21:48??qt_viewer\debug\qt_viewer.ilk
?????文件????????638??2012-09-27?21:48??qt_viewer\debug\qt_viewer.intermediate.manifest
?????文件????2395136??2012-09-27?21:48??qt_viewer\debug\qt_viewer.pdb
?????文件???????4536??2012-09-27?21:47??qt_viewer\main.cpp
?????文件???????7103??2012-09-27?17:26??qt_viewer\Makefile
?????文件???????5827??2012-09-27?17:26??qt_viewer\Makefile.Debug
?????文件???????5819??2012-09-27?17:26??qt_viewer\Makefile.Release
?????文件????????248??2012-09-27?17:23??qt_viewer\qt_viewer.pro
?????文件??????17546??2012-09-27?23:47??qt_viewer\qt_viewer.pro.user
?????文件????1970176??2012-09-27?21:48??qt_viewer\vc100.pdb
?????目錄??????????0??2012-09-27?23:48??qt_viewer\debug
?????目錄??????????0??2012-09-27?23:48??qt_viewer\release
?????目錄??????????0??2012-09-27?23:48??qt_viewer
-----------?---------??----------?-----??----
??????????????5670880????????????????????16
評論
共有 條評論