Проблемы с созданием нового ImageGenerator - PullRequest
1 голос
/ 29 августа 2011

Я новичок в OpenNI и пытаюсь создать простой ImageGenerator, который просто отображает чистое цветное изображение, скажем, белое, я изменил «SampleModule» и в методе UpdateData () назначаю значение * pPixelс 255. Метод UpdateData () выглядит следующим образом:

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, но когда я пытаюсь прочитать значение пикселя изображения из данных, сгенерированных модулемЯ получил какое-то странное значение (не 255, как я ожидал), я использую следующий код для считывания значения пикселя.

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» можно найти как глубину.

Любой совет будет признателен.

Спасибо за миллион, Хаолин Вей

1 Ответ

0 голосов
/ 23 мая 2017

Проверьте, делали ли вы следующие вещи: 1. установить цветовой формат, т. Е. RGB (или YUV) 2. установите правильное значение для каждого пикселя в updataData (), то есть r = 255, g = 255, b = 255

...