Я снимаю изображения в режиме реального времени, используя OpenCV, и хочу показать эти изображения в окне OGRE в качестве фона. Таким образом, для каждого кадра фон будет меняться.
Я пытаюсь использовать MemoryDataStream
вместе с loadRawData
для загрузки изображений в окно OGRE, но получаю следующую ошибку:
OGRE EXCEPTION (2: InvalidParametersException): размер потока не
соответствовать вычисленному размеру изображения в Image :: loadRawData в
../../../../../OgreMain/src/OgreImage.cpp (строка 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)
Почему я всегда получаю эту ошибку памяти?