OpenCV2学习笔记(十七):VS2013中运行支持OpenGL的OpenCV工程

之前一直用Qt+OpenCV开发项目,而在VS中直接偷懒使用预编译的OpenCV进行开发,结果在使用OpenGL时提示”No OpenGL support”:

这里写图片描述

上网查了一下,原因很明显,是因为预编译好的library不支持OpenGL,因此需要使用cmake重新build工程。我的开发环境是:Win 8.1+VS2013+OpenCV 2.4.9。

从OpenCV2.4.2版本开始,OpenCV在可视化窗口中支持OpenGL,在highgui的模块中可找到接口。这使得OpenCV可以轻松渲染任何3D内容。但是OpenCV默认不启用OpenGL支持,因此需设置标志ENABLE_OPENGL=
YES,(默认ENABLE_OPENGL = NO)。

在本次配置成功后,将演示在OpenCV的显示输出中嵌入OpenGL的3D物体。整个流程如下:

一、生成OpenCV解决方案

安装CMake并打开,在第一行“Where is the source code”后面的那个“Browse Source…”按钮,选择OpenCV的安装路径。我的Opencv2.0安装路径为E:/opencv/opencv/,这里需要选择source文件夹;点击第二行的“Browse Build…”按钮并选择生成的解决方案的路径。这里放置在E:/opencv/OpencvBuild文件夹中,设定完成后点击左下方的configure。

这里写图片描述

在弹出的对话框中选择编译器版本Visual Studio 12(即Visual Studio 2013),点击Finish。

这里写图片描述

在下面的编译参数设置中找到WITH_OPENGL,打上勾,再次点击Configure。

这里写图片描述

再次点击Configure,完成后点击Generate,关闭CMake。至此编译前的配置工作全部完成。

这里写图片描述

二、在VS中编译OpenCV

用VS2013打开E:\opencv\OpencvBuild下的OpenCV.sln。在编译之前,确认解决方案平台为Debug|Win 32。右键点击项目ALL_BUILD,选择生成;完成之后找到CMakeTargets->INSTALL,再次选择生成。

这里写图片描述

等待生成完毕。若第一次选择的解决方案平台选择的是Debug 32位,则将解决方案配置改为Release,然后等待再次依次生成ALL_BUILD和INSTALL,至此OpenCV的编译工作完成。

(这里可能会出现编译的错误。根据网上的介绍,OpenGL在VS中是支持的,不需要安装,但若出现编译不通过的情况,可尝试在所有使用<gl\gl.h>头文件的地方前都添加#include <windows.h>

三、在VS中配置OpenCV

这里用VS属性表的方式配置OpenCV工程,每次只需要添加属性表即可完成配置,比手工界面配置方便很多。 属性管理器 -> 右键 “test”(工程名) -> 添加现有属性。

这里写图片描述

修改项目属性表的名字后点击“添加”,即可在属性管理器中见到我们新建的属性表(这里取名为opencv)。

这里写图片描述

右键点击我们刚建立的属性表并点击“属性”,在弹出的窗口中点击“VC++目录”,点击右侧的“包含目录”,添加:E:\opencv\OpencvBuild\install\include

同样地,在“库目录”添加:E:\opencv\OpencvBuild\lib\Debug

这里写图片描述

点开“链接器”->输入->附加依赖项,按照需要添加相应的库文件:

这里写图片描述

用同样的方式,向“Release | Win32”属性中添加属性表,并对属性表进行以下配置:

在“包含目录”添加:E:\opencv\OpencvBuild\install\include

在“库目录”添加:E:\opencv\OpencvBuild\lib\Release

向“附加依赖项”添加:E:\opencv\OpencvBuild\install\include\Release下的库文件。

在VS完成以上配置后,剩下的最后一步是添加系统变量Path:E:\opencv\OpencvBuild\install\x86\vc12\bin;

四、简单的演示

至此所有关于OpenCV和OpenGL的配置均已完成,接下来就是试验以下用OpenCV建立OpenGL窗口,这里打开一个现实增强的工程,在属性管理器中Debug|Win32处右击,选择“添加现有属性表”,选择之前生成的opencv属性表(把属性表文件事先放到该工程文件夹中):

这里写图片描述

编译现实增强项目并生成可执行文件后,输入图像即可得到OpenGL渲染的3D绘图。

这里写图片描述

这里写图片描述

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyuefeilong/article/details/44872809
所属专栏: 学习之路:OpenCV2
想对作者说点什么? 我来说一句
相关热词

没有更多推荐了,返回首页

关闭
关闭
关闭