Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';使用Irrlicht时,请不要使用OpenCV检索网络摄像头帧_C++_Opencv_Irrlicht - Fatal编程技术网

C++ Can';使用Irrlicht时,请不要使用OpenCV检索网络摄像头帧

C++ Can';使用Irrlicht时,请不要使用OpenCV检索网络摄像头帧,c++,opencv,irrlicht,C++,Opencv,Irrlicht,例如,当我单独使用OpenCV库(或与纯OpenGL一起使用)时,我能够成功地从我的网络摄像头中检索相机帧,并使用GLUT窗口显示它。然而,当我使用Irrlicht作为渲染引擎执行完全相同的过程时,我总是得到空帧。有人知道为什么会这样吗 while(device->run()) { if( cv::waitKey(50) >= 0 ) break; if( !capture.grab() ) { std::cout << "Unab

例如,当我单独使用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();
while(设备->运行())
{
如果(cv::waitKey(50)>=0)中断;
如果(!capture.grab())
{
std::cout>摄像机框架;
如果(!camera_frame.empty())
{
unsigned char*tex_buf=(unsigned char*)frame_tex->lock();
无符号字符*frame\u buf=摄像机\u frame.data;
//从RGB转换为RGBA
对于(int y=0;yunlock();
驱动程序->开始场景(真、真、色(255100101140));
驱动程序->draw2DImage(帧纹理,核心::矩形(0,0,窗口宽度,窗口高度),
核心::rect(0,0,窗宽,窗高);
smgr->drawAll();
guienv->drawAll();
驱动程序->结束场景();
}
}
设备->下降();

如果我将代码放在(包括)beginScene和endScene之间,使其超出摄影机帧空度测试,我的网格将正确渲染,但不会显示任何摄影机帧(帧仍为空)。

同样,在调用之前的irrlicht时,imload也会失败。