2011-08-29 38 views
1

我是新來的OpenNI,我想創建一個簡單的ImageGenerator,只是顯示一個純色圖像,說白色,我修改了「SampleModule」,並在UpdateData()方法我分配與255的updateData()方法* pPixel值如下問題與創建一個新的ImageGenerator

XnStatus SampleImage::UpdateData() 
{ 
    XnStatus nRetVal = XN_STATUS_OK; 

    XnUInt8* pPixel = m_pImageMap; 

    for (XnUInt y = 0; y < 300; ++y) 
    { 
     for (XnUInt x = 0; x < 400; ++x, ++pPixel) 
     {   
      *pPixel = (XnUInt8)255; 
     } 
    } 

    m_nFrameID++; 
    m_nTimestamp += 1000000/SUPPORTED_FPS; 

    // mark that data is old 
    m_bDataAvailable = FALSE; 

    return (XN_STATUS_OK); 
} 

代碼編譯細,我可以與nireg註冊,但是當我嘗試讀取從數據的圖像的像素值由模塊生成我得到了一些奇怪的值(不像我預期的那樣),我使用下面的代碼來讀取像素值。

const XnUInt8* pImageMap = mImageGenerator.GetImageMap(); 

for (XnUInt y = 0; y < 300; ++y) 
{ 
     for (XnUInt x = 0; x < 400; ++x, ++pImageMap) 
     { 
      cout << (int)*pImageMap << endl; 
     } 
} 

而且當我運行「NiViewer」的方案仍然說這是不可能找到像節點,但「SampleModule」,可以找到一個深度。

任何意見將不勝感激。

萬分感謝, 浩林衛

+0

所以當你運行NiViewer,並按1或2或3或4 ...你看到圖像?或不? – blueskin

+0

嗨blueskin,我已經嘗試了niviewer,但它說它找不到設備,我認爲這可能是因爲配置文件,但我不知道爲什麼隨openni自帶的「SampleModule」在niviewer中運行良好註冊後。有什麼建議麼?非常感謝。 –

+0

我正在使用舊版本的OpenNI,因此不確定SampleModule是什麼。如果你打開你的設備管理器,你會看到像Xbox NUI Camera或類似的東西。 – blueskin

回答

0

檢查,如果你做了以下幾件事:1。 一套色彩格式,即RGB(或YUV)在updataData每個像素 2.設定正確的值() ,即r = 255,g = 255,b = 255