如何集成OpenCV和OpenGL (Visual c++ 2008)



我写了两个代码,使用OpenCv(用于标记检测)和OpenGL(用于创建简单的3D框)。但是我不知道怎么积分这两个。在OpenCV窗口中显示该框。

当我试图调用OpenCV和OpenGL的以下两个函数时,只有OpenGL函数似乎正在执行。(OpenGL窗口只创建,但现在OpenCV一个)

int main(int argc, char** argv){
    initGL(argc, argv); // basic initialization steps for OpenGL
    glutMainLoop(); // shows 3D scene in a new window
    startOCV(); // shows camera stream in a new window
    return 0;
}

谢谢

glutMainLoop进入GLUT事件处理循环。这个例程在GLUT程序中最多只能调用一次。一旦被调用,这个例程将永远不会返回

你的代码将阻塞在glutMainLoop上,所以你需要在它之前调用startOCV

如果startOCV阻塞,您需要在线程中运行此函数,以便main()可以继续执行glutMainLoop

编辑::

但是正确的方法是另一种方式:将OpenCV的图像复制到OpenGL纹理并渲染到OpenGL窗口

您可以尝试最新的OpenCV主干。他们在highgui (OCV显示模块)中集成了OpenGL。它可能会使你的生活更轻松,并为你解决问题。

不要忘记任何主干版本都可能有bug和文档。下一个正式版本还没有计划。

我有类似的问题,这就是我如何解决它。我有代码捕获相机流,使用OpenCV和无限while循环和动画,使用openGL和glut- glutMainLoop()

我把openCV代码捕捉相机流在更新函数和称为glutTimerFunc(TIMER_MS, update, 0)在主。动画和镜头流现在都在工作。但是,它确实减慢了动画的速度。

最新更新