1

我是 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”作为深度。

任何建议将不胜感激。

谢谢一百万,郝林伟

4

1 回答 1

0

检查您是否做了以下事情: 1. 设置颜色格式,即 rgb(或 YUV) 2. 为 updataData() 中的每个像素设置正确的值,即 r=255,g=255,b=255

于 2017-05-23T10:46:22.067 回答