【发布时间】:2011-12-13 14:10:57
【问题描述】:
我正在使用 OpenCV 实时捕捉图像,我想在 OGRE 窗口中将这些图像显示为背景。因此,对于每一帧,背景都会发生变化。
我正在尝试使用 MemoryDataStream 和 loadRawData 将图像加载到 OGRE 窗口中,但出现以下错误:
OGRE EXCEPTION(2:InvalidParametersException):流大小不 匹配 Image::loadRawData 中计算的图像大小 ../../../../../OgreMain/src/OgreImage.cpp(第 283 行)
来自 OpenCV 的图像大小为 640x480,frame->buffer 是 OpenCV 2.3 中Mat 的一种类型。另外,我在 OpenCV 中使用的像素格式是CV_8UC3(即每个像素为 8 位,每个像素包含 3 个通道 (B8G8R8))。
Ogre::MemoryDataStream* videoStream = new Ogre::MemoryDataStream((void*)frame->buffer.data, 640*480*3, true);
Ogre::DataStreamPtr ptr(videoStream,Ogre::SPFM_DELETE);
ptr->seek(0);
Ogre::Image* image = new Ogre::Image();
image->loadRawData(ptr,640, 480,Ogre::PF_B8G8R8 );
texture->unload();
texture->loadImage(*image)
为什么我总是收到这个内存错误?
【问题讨论】: