我正在使用OpenCV实时捕获图像,我想在OGRE窗口中显示这些图像作为背景。因此,每帧背景都会改变。
我正在尝试使用MemoryDataStream
和loadRawData
将图像加载到OGRE窗口中,但是出现以下错误:
图像来自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)
为什么我总是收到此内存错误?
最佳答案
简单的想法,也许是内存4字节对齐问题?
参见Link 1和
Link 2
关于c++ - 加载opencv帧时,食人魔中的loadRawData内存问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8490596/