使用Irrlicht时无法使用OpenCV检索网络摄像头帧

时间:2014-01-23 18:34:19

标签: c++ opencv irrlicht

当我单独使用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之外的相机框架空白测试中,我的网格将被正确渲染,但不会显示相机框架(框架保持为空)。

0 个答案:

没有答案