我正在使用 OpenCV 实时捕获图像,并且我想在 OGRE 窗口中将这些图像显示为背景。因此,对于每一帧,背景都会改变。
我正在尝试使用MemoryDataStream
withloadRawData
将图像加载到 OGRE 窗口中,但出现以下错误:
OGRE EXCEPTION(2:InvalidParametersException):流大小与 ../../../../../OgreMain/src/OgreImage.cpp 处的 Image::loadRawData 中计算的图像大小不匹配(第 283 行)
图像来自 OpenCV,大小为 640x480,frame->buffer
属于Mat
OpenCV 2.3 中的一种。此外,我在 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)
为什么我总是得到这个内存错误?