我是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”可以作为深度找到。
任何建议都会受到赞赏。
万分感谢 Haolin Wei
答案 0 :(得分:0)
检查您是否做了以下事情: 1.设置颜色格式,即rgb(或YUV) 2.为updataData()中的每个像素设置正确的值,即r = 255,g = 255,b = 255