当我单独使用OpenCV库(或使用纯OpenGL)时,我能够从网络摄像头成功检索相机框架,并使用GLUT窗口显示它。但是,当我使用Irrlicht作为渲染引擎执行完全相同的过程时,我总是得到空帧。有没有人有任何想法为什么会这样?
while(device->run())
{
if( cv::waitKey(50) >= 0 ) break;
if( !capture.grab() )
{
std::cout << "Unable to grab camera grame\n";
}
capture >> camera_frame;
if( ! camera_frame.empty() )
{
unsigned char *tex_buf = (unsigned char*)frame_tex->lock();
unsigned char *frame_buf = camera_frame.data;
// Convert from RGB to RGBA
for(int y=0; y < camera_frame.rows; y++) {
for(int x=0; x < camera_frame.cols; x++) {
*(tex_buf++) = *(frame_buf++);
*(tex_buf++) = *(frame_buf++);
*(tex_buf++) = *(frame_buf++);
*(tex_buf++) = 255;
}
}
frame_tex->unlock();
driver->beginScene(true, true, SColor(255,100,101,140));
driver->draw2DImage(frame_tex, core::rect<s32>(0,0,WINDOW_WIDTH,WINDOW_HEIGHT),
core::rect<s32>(0,0,WINDOW_WIDTH,WINDOW_HEIGHT));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
}
}
device->drop();
如果我将代码放在(包括)beginScene和endScene outsite之外的相机框架空白测试中,我的网格将被正确渲染,但不会显示相机框架(框架保持为空)。