我是 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”作为深度。
任何建议将不胜感激。
谢谢一百万,郝林伟