我正在使用OpenCV实时捕获图像,我想在OGRE窗口中显示这些图像作为背景。因此,每帧背景都会改变。

我正在尝试使用MemoryDataStreamloadRawData将图像加载到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/

10-10 16:13