在Qt Creator中使用OpenCV
win32 { message("Using win32 configuration") OPENCV_PATH = C:/OpenCV/opencv310 INCLUDEPATH += $$OPENCV_PATH/build/include/ LIBS_PATH = "$$OPENCV_PATH/build/x64/vc14/lib" # project compiled using Visual C++ 2015 64bit compiler CONFIG(debug, debug|release) { LIBS += -L$$LIBS_PATH -lopencv_world310d } CONFIG(release, debug|release) { LIBS += -L$$LIBS_PATH -lopencv_world310 } } message("OpenCV path: $$OPENCV_PATH") message("Includes path: $$INCLUDEPATH") message("Libraries: $$LIBS")
1、下载及安装
OpenCV是一套开源免费的图形库,主要有C/C++语言编写,官网: http://opencv.org/ 。在http://opencv.org/downloads.html 可以找到个版本和各种平台的程序包。OpenCV的Windows平台安装包是放在SourceForge.net网站。
我下了2.4.4版,大概217M。安装包其实就是一个压缩包,安装过程就是解压到某个文件夹。我是安装到 E:Softopencv 目录,安装后文件夹如下:
我们只需要关注“build”文件夹即可,其他的可以不用管。“build”文件夹编译后的文件,我们可以直接使用。打开“build”文件夹,如下
编写过C++程序的都知道,要使用别人的编写好的DLL,那么需要三种文件,即头文件、后缀名为“lib”的链接文件,后缀名为"dll"的动态库文件。如果使用静态编译方式,那么需要头文件和静态库文件。X86是32位操作系统的库,X64是64位操作系统的库。
(1)“buildx86vc10in”目录下放的是OpenCV运行时所需的动态运行库,
(2)“buildx86vc10lib”目录放的是编译OpenCV程序时所需的的动态链接库,
(3)“buildx86vc10staticlib”目录方式的静态编译时OpenCV所需要的静态链接库,如果是静态编译,运行时则不需要“buildx86vc10in”目录的DLL文件,但编译后的文件较大。
由于我使用VS2010,所以只关注目录 E:Softopencvuildx86vc10 。为了使VS2010可以编译OpenCV程序,我们需要对VS2010做一些设置,主要是让VS2010能找到OpenCV的头文件和链接库。在“OpenCV安装目录uilddocs”目录下有个名为“opencv_tutorials.pdf”的PDF文档,里面的1.5节“How to build application with OpenCV inside the Micorosoft Visual Studio”说明了如何配置VS2010。
---------------------OpenCV3.1.0----------------
OpenCV3.1.0+VS2013配置+Win10(64位)
虽然配置OpenCV不是一件很繁琐的事情,但是因为不是很了解每一步的作用,所以有时候一不小心就会出错。下面就跟大家分享一下我配置的方法以及一些技巧。
在这之前,像做饭一样,我们得先准备好材料:
VS2013+OpenCV3.1.0
OpenCV3.1.0可以到OpenCV的官网上面下载:
http://opencv.org/
下载完成后,得到的是一个.exe:
接着运行它即可得到我们需要的文件夹。
-------------------------------------------------------上面是一些准备工作,下面正式开始-----------------------------------------------------
我想介绍两种方法,前一种比较low,每次使用VS新建一个工程时,需要重新配置;后一种效率比较高,每次使用VS的时候只需要添加现有的属性表(不清楚属性表是什么没关系哈,耐心往下看)即可,本文有一些截图过于细节,目的是为了方便初次配置的朋友,之前配置过的朋友可以跳着看哈。
(一)先来介绍第一种方法。
1、配置环境变量。
我的电脑(右键)——属性——高级系统设置——环境变量——Path(双击)
在原有的Path后面加上分号;然后加上D:/Work_Software/OpenCV3.1/opencv/build/x64/vc12/bin
注意加上的路径是你的电脑上build/x64/vc12/bin所对应的路径,不要照搬我上面的路径。
再注意最后不用加分号,分号只加在路径之间,而且切忌将原来的Path都删除!!!
PS:这个bin文件夹是什么来头呢?里面有一些dll文件,也就是动态链接库,可以理解成是opencv里面用到的函数的实现。
(初次配置OpenCV的朋友可以忽略此括号中的话,PS:配置过3.1.0之前版本的朋友会发现,3.1.0版本中build文件夹中只有x64文件夹,而没有了x86文件夹。也就是说,在配置3.1.0版本之后,使用VS进行OpenCV相关的编程的时候,只能使用64位的编译器,而不能使用32位的编译器了。这与之前版本有所不同,之前是,32位系统只能使用32位的编译器,而64位的系统可以使用32位或者64位的编译器。这个是我自己琢磨出来的,如果有错误的地方,欢迎指正。)
好了,到这里,环境变量就配置完成了,有的说法是,环境变量配置完成后需要重启一下电脑才能生效,这个没有亲测过,保险起见的话可以重启一下,顺便放松一下眼睛~~~~
2、VS中的配置。
(1)首先,打开VS2013并新建工程如下:
(2)接着,在源文件处新建一个main.cpp文件如下:
这样就完成了新建工程的任务,接下来就要对我们新建的工程进行设置了。下面才是关键:
(3)将32位编译器Win32改为64位编译器x64,操作如下图:
(4)接下来,对工程test1进行设置,总共有三个东西需要设置:“包含目录”“库目录”以及“附属依赖项”,一个一个来。
第一,编辑包含目录如下:
选择build文件夹中的include文件夹操作如下:
设置好包含目录之后,我们后面的使用中就可以在我们程序的开头将与OpenCV有关的头文件通过“#include<opencv2/opencv.hpp>”这样的方式包含进来了。
PS:有的教程不仅仅将include文件夹的路径添加到包含目录中,而且将include文件夹中opencv和opencv2这两个文件夹的路径也添加到包含目录中了。这一步可有可无,区别在于,如果我将opencv2文件夹的路径也添加到包含目录中,那么我在我的程序开头就可以将上面说到的“#include<opencv2/opencv.hpp>”改写成“#include<opencv.hpp>”,编译器可以自己跑到opencv2文件夹中查找。
第二,编辑库目录,类似于编辑包含目录,将/build/x64/vc12/lib的路径添加到库目录中如下图(容易知道,lib也就是library库的缩写):
第三,添加附属依赖项如下:
需要注意的是,我们这里添加的附属依赖项是以“d”结尾的,也即是Debug模式的,如实想用Release模式的话,则将上面的“opencv_world310d.lib”改为“opencv_world310.lib”即可。
配置过之前版本的朋友会发现,以前2点几版本的OpenCV需要添加一大堆的附属依赖项,到了3.0的时候仅仅需要两个.lib,到了3.1.0的时候,就只剩下一个了!!!
好了,到此为止,第一种方法就介绍完了,只要在新建的main.cpp文件中运行一下下面的测试代码:
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
Matpicture = imread("F://My_Desktop//1st//no_phone//1.jpg");
imshow("测试程序", picture);
waitKey(0);
}
就可以欣赏到我们自己的劳动成果啦!imread后面的路径是所要显示的照片的路径,这里使用了“//”而不是“/”是因为“/”在C++中有转义的作用,所以要用两个“/”即“//”。
当然在前面也说到了,用这种方法的缺点是每次使用VS新建一个工程的时候,都要重复上面的2(1)-2(4)。所以,下面我将要介绍第二种方法!
---------------------------------------------------------第二种方法-----------------------------------------------------------------
(二)第二种方法。
1、配置环境变量。同上面的方法一样,如果在使用方法一的时候已经配置过了,那么这一步可以跳过。
2、VS中的配置。
(1)、(2)同(一)2(1)-(2)
(3)添加新项目属性表。
打开属性管理器:
这时候出现的窗口是下面这样的,这是使用32位编译器的情况,如上面说到的,我们要将编译器改为64位的:
这时候需要打开配置管理器,新建x64:
这样操作之后,属性管理器窗口多出了两个东西如下:
接下来在Debug|x64或者Relase|x64右键(这里以Debug为例):
添加属性表,名称改成一个方便自己记忆的名字,我这里用的是opencv_3.1.props
接着,在我们新添加的属性表处右键选择属性:
然后就得到了一个很亲切的窗口,没错,这个在上面出现过,设置的过程也跟上面一样。按照上面的(一)2(4)所说的方法设置好“包含目录”“库目录”以及“附属依赖项”。
好了,当你设置好点下“确定”之后,你同样可以在main.cpp中输入(一)中给出的测试程序,运行即可。
下面是重点,当你下一次再打开VS新建工程的时候,你需要做的仅仅是下面的事情:
第一步:新建工程;
第二步:打开配置管理器(上面有说到如何打开),将Win32改为x64;
第三步:在属性管理器中,添加现有属性表,将上面制作好的opencv_3.1.props添加进来如下图所示。
这样就大功告成啦!!!接着在新建的main.cpp文件中就可以编程了,如果你不嫌烦的话,可以在试一下上面的测试程序。
参考:
http://www.th7.cn/Program/cp/201603/773871.shtml
http://www.cnblogs.com/geekite/p/5568995.html
http://www.cnblogs.com/freedomshe/archive/2012/04/25/2470540.html