OpenCV を使用してリアルタイムで画像をキャプチャしており、これらの画像を背景として OGRE ウィンドウに表示したいと考えています。そのため、フレームごとに背景が変わります。
MemoryDataStream
とともに使用して画像を OGRE ウィンドウにロードしようとしてloadRawData
いますが、次のエラーが発生します。
OGRE EXCEPTION(2:InvalidParametersException): ストリーム サイズが、../../../../../OgreMain/src/OgreImage.cpp の Image::loadRawData で計算された画像サイズと一致しません (283 行目)
画像は、サイズが 640x480 の OpenCV から取得され、OpenCV 2.3frame->buffer
の一種です。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)
このメモリエラーが常に発生するのはなぜですか?