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绘图。

时间: 2024-11-06 07:36:49

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

醉滋租紫阻咨OpenCV2学习笔记(十七):VS2013中运行支持OpenGL的OpenCV工程

http://0ob9714.cn.ec51.com/ http://gw05mgf.cn.ec51.com/ http://gjm8j8n.cn.ec51.com/ http://4lm334n.cn.ec51.com/ http://odid2lg.cn.ec51.com/ http://mely4ur.cn.ec51.com/ http://9203ftj.cn.ec51.com/ http://gb034jf.cn.ec51.com/ http://wiewf7v.cn.ec51.com

【学习笔记】jQuery中的动画与效果

1.基本效果 匹配元素从左上角开始变浓变大或缩小到左上角变淡变小 ①隐藏元素 除了可以设置匹配元素的display:none外,可以用以下函数 hide(speed,[callback])  返回值:jQuery  参数-speed:三种预订速度之一的字符串String(slow,normal,fast)或表示动画时长的毫秒数Number  callback:在完成动画时执行的函数,每个匹配元素执行一次 slow=600毫秒  normal=400毫秒  fast=200毫秒 以优雅的动画隐藏所

OpenCV2学习笔记:图像的读取与显示

1. 图像读取:imread() Mat imread(const string& ?lename, int ?ags=1 ) 参数介绍: filename: 待加载的文件名称. flags: 此标志用来指定被加载图像的颜色类型(color type).这个标志的取值可以有: -- CV_LOAD_IMAGE_ANYDEPTH : 如果设置这个标志的话,如果图像为16位或32位深度的图像,则返回对应深度的图像:否则,将图像转换为8位深度图像再返回. -- CV_LOAD_IMAGE_COLOR

Redis学习笔记(简单了解与运行)

Redis学习笔记(简单了解与运行) 开源的非关系型数据库 是REmote Dictionary Server(远程字典服务器)的缩写,以字典结构存储数据 允许其他应用通过TCP协议读写字典中的内容. Redis支持存储的键值数据类型 字符串类型 散列类型 列表类型 集合类型 有序集合类型 Redis的特性 通过一个列子看出Mysql和Redis的存储区别 例如: (存储一篇文章,文章包括:标题(title),正文(content),阅读量(views),标签(tags)) 需求: 把数据存储在

cocos2dx学习笔记(4)——VS2010中的中文乱码问题

当你想使用中文时,你是否有这样的一个困惑. 把样例中的HelloWorld改成中文的 "你好,世界!". 然后编译运行,发现居然是个乱码!!! 因为cocos2dx中使用的是UTF-8字符集,而VS中确实ANSI. 所以我们需要对其进行字符集转换. 然后纵里寻它求百度,终于找到了解决方案. 一个函数搞定! #include "cocos2d.h" char* toUTF(const char* strGB2312) { int iLen = MultiByteToW

MySQL学习笔记-操作数据表中的记录

MySQL学习笔记-操作数据表中的记录 1.插入记录 INSERT INSERT [INTO] tbl_name [(col_name,...)] {VAULES|VALUE} ({expr|DEFAULT},...),(...),... 例,插入单条记录: mysql> USE testDatabase changed mysql> CREATE TABLE users(    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,   

[学习笔记]面向对象开发中的一些思想和原则

摘自<Java与模式>作者阎宏 面向对象的可复用设计的第一块基石:开闭原则(一个软件实体应当对扩展开放,对修改关闭) "开-闭"原则的手段和工具: 1)里氏代换原则:任何基类出现的地方,子类一定可以出现: 2)依赖倒转原则:要依赖于抽象,不要依赖于实现: 3)合成\聚合复用原则:要尽量使用合成\聚合,而不是继承关系达到复用的目的: 4)迪米特法则:一个软件实体应该与尽可能少的其它实体发生相互作用: 5)接口隔离原则:应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口

angular学习笔记(十七)-路由和切换视图

本篇介绍angular中如何通过判断url的hash值来显示不同的视图模板,并使用不同的控制器: 下面,通过一个例子,来一步一步说明它的用法: 我们要做一个邮箱应用,打开的时候显示的是邮件列表: 然后点击邮件主题,可以查看该邮件的详细内容: 点击返回列表,再回到列表页 一. 创建index页面: <!DOCTYPE html> <html> <head> <title>14.1路由和视图切换</title> <meta charset=&q

MVC4 学习笔记 之 URL中存在编译的空格 20%20%

/Config/Edit/QQCC%20%20%20%20%20%20%20 原因是: 通过EF直接添加了空格? NO 是因为你的数据库字段设计问题,因为你当然设计如>:sID nchar(10) 那你一定想输入10个字符,但实际你只输入了必个,所以后面数据自动帮你补空了. 从EF数据库取出数据,在绑定的时候为安全,编码了,所以显示%20,代表一个空格. MVC4 学习笔记 之 URL中存在编译的空格 20%20%,布布扣,bubuko.com