创建新 ImageGenerator 时出现问题

发布于 2024-12-01 19:01:46 字数 1061 浏览 0 评论 0原文

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

任何建议将不胜感激。

感谢一百万, 魏浩林

I'm new to the OpenNI and I'm trying to create a simple ImageGenerator that just display a pure color image, say white, I modified the “SampleModule” and in the UpdateData() method I assign the *pPixel value with 255. The UpdateData() method is as following

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);
}

The code compile fine, and I could register it with nireg, but when I try to read the image pixel value from the data generated by the module I got some strange value (not 255 as I expected), I use the following code to read the pixel value.

const XnUInt8*    pImageMap = mImageGenerator.GetImageMap();

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

and also when I run the “NiViewer” the program still say it can't find the image node, but the “SampleModule” can be find as a depth.

Any advice would be appreciate.

Thanks a million,
Haolin Wei

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花期渐远 2024-12-08 19:01:46

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

Check if you did following things:
1. set color format, i.e, rgb (or YUV)
2. set correct value for each pixel in the updataData(), i.e. r=255,g=255,b=255

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文