我正在使用 OpenCV 实时捕捉图像,我想在 OGRE 窗口中显示这些图像作为背景。因此,对于每一帧,背景都会发生变化。
我正在尝试使用 MemoryDataStream
和 loadRawData
将图像加载到 OGRE 窗口中,但出现以下错误:
OGRE EXCEPTION(2:InvalidParametersException): Stream size does not match calculated image size in Image::loadRawData at ../../../../../OgreMain/src/OgreImage.cpp (line 283)
一张图片来自OpenCV,大小为640x480,frame->buffer
是OpenCV 2.3中的一种Mat
。另外,我在 OpenCV 中使用的像素格式是 CV_8UC3
(即,每个像素为 8 位,每个像素包含 3 个 channel ( 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)
为什么我总是遇到这个内存错误?
我是一名优秀的程序员,十分优秀!