Opencv环境搭建(Visual Studio+Windows)

来源:互联网 发布:java商城项目面试 编辑:程序博客网 时间:2024/05/29 21:35

1.1 库路径添加方式

1.1.1 Opencv的安装及环境变量配置

1.下载源码包

这里写图片描述

图1-1

将源码下载后双击可执行程序,安装在当前盘符下。
这里写图片描述

图1-2

源码地址:http://opencv.org/
笔者使用的版本是3.0.0,最新(2017-11-6)的版本是3.3.1。安装方法都是大同小异,希望笔者不要过分在意版本,安装方法都是相通的。
2.为Opencv 添加环境变量
计算机–>属性,点击高级系统设置。
这里写图片描述

图1-3

出来系统属性对话框后,点击环境变量。
这里写图片描述

图1-4

【Tips】不管是win7还是win8或者win10,都是大同小异。
弹出如下对话框,如果没PATH,则新建PATH。
这里写图片描述

图1-5

【注1】最好是添加到系统变量的path路径。
笔者用的是win7,编辑系统变量中的PATH,在变量值后面输入:
D:\opencv\build\x86\vc11\bin
【注2】
 如果不是新建的PATH,则最前面有一个分号。如果双击后前一条路径已经自带了分号就无需加上,如果没有需要把分号也复制进去,最后要保证两段路径之间有且仅有一个分号。
 变量值根据你所用的VS和Opencv的安装路径来决定,还有就是计算机的位数。不管读者使用的电脑是64位还是32位,笔者建议使用X86(32位),配置比较方便,下文都是配置的X86环境,有兴趣的可以试着配置64位的。对于版本的的选择应该是比当前是使用的低一位,笔者用的是VS12版本,所以选择了VC11下的bin目录,以此类推。

1.1.2 VS2012 的配置及测试

1、新建工程:选择Win32控制台应用程序,为你的工程取个名字,点击确定

这里写图片描述

图1-6

点【下一步】
这里写图片描述

图1-7

2、弹出Win32应用程序向导,按下图选中选项后,点击【完成】。
这里写图片描述

图1-8

3、配置
首先找到项目的<资源管理器>。
方法一:在菜单栏里面点<视图>–<其他窗口>–<属性管理器>
这里写图片描述

图1-9

方法二:在默认的VS布局中在工程一侧有<属性管理器>,直接单击就行了。
这里写图片描述

图1-10

点击项目->Debug|Win32->Microsoft.Cpp.Win32.userDirectories(右键属性,或者双击)即可打开属性页面。打开属性页面后,就是一番配置了。
这里写图片描述

图1-11

首先是在【通用属性】 ->【VC++目录】 ->【包含目录】中
添加上
D:\ opencv\build\include
D:\opencv\build\include\opencv
D: \opencv\build\include\opencv2 这三个目录。
【注】这是根据安装目录而定的。
接着上步,就是在【通用属性】 ->【VC++目录】 ->【库目录】中,
添加上D:\opencv\build\x86\vc11\lib这个路径。
这里写图片描述

图1-12

接下来就就是链接库的配置,【通用属性】 ->【链接器】->【输入】->【附加的依赖项】添加3.0.0版本的lib,带d的是debug版本,不带d的是release版本的。

opencv_world300d.lib opencv_ts300d.lib

【注意】
添加如2.4.9版本(或者其他3.0以下版本)的lib(这样的lib顺序是:19个带d的debug版的lib写在前面,19个不带d的release版的lib写在后面):

opencv_ml249d.libopencv_calib3d249d.libopencv_contrib249d.libopencv_core249d.libopencv_features2d249d.libopencv_flann249d.libopencv_gpu249d.libopencv_highgui249d.libopencv_imgproc249d.libopencv_legacy249d.libopencv_objdetect249d.libopencv_ts249d.libopencv_video249d.libopencv_nonfree249d.libopencv_ocl249d.libopencv_photo249d.libopencv_stitching249d.libopencv_superres249d.libopencv_videostab249d.lib
opencv_objdetect249.libopencv_ts249.libopencv_video249.libopencv_nonfree249.libopencv_ocl249.libopencv_photo249.libopencv_stitching249.libopencv_superres249.libopencv_videostab249.libopencv_calib3d249.libopencv_contrib249.libopencv_core249.libopencv_features2d249.libopencv_flann249.libopencv_gpu249.libopencv_highgui249.libopencv_imgproc249.libopencv_legacy249.libopencv_ml249.lib

好了到这里基本就配置完了,接下来下就是测试了。

4、测试
新建一个类。

这里写图片描述

图1-13

在文件中输入以下内容。

#include <iostream>  #include <opencv2/core/core.hpp>  #include <opencv2/highgui/highgui.hpp>  using namespace cv;  using namespace std; int main(){      //载入图片      Mat img = imread("pic.jpg");      // 创建一个名为 "图像显示"窗口        namedWindow("图像显示");      // 在窗口中显示图像        imshow("图像显示", img);      // 等待1000 ms后窗口自动关闭        waitKey(1000);  }

并在main.cpp的目录下一个文件名为pic.jpg的图片。运行程序的效果就
能看到图片了。

1.2 源码安装方式

在开始讲解源码安装方式之前,我们需要明白为何要这么费劲编译源码呢?起初笔者也很纳闷,编译源码既繁琐又费时,而且OpenCV官网也给我们提供了对应的win pack包,下载下来配置一下不就可以使用啦。笔者相信很多初次接触OpenCV的朋友就连使用官方的win pack都有可能没有配置成功,更不要说根据自己的电脑和需求来编译源码了。
接下来笔者就来回答为何要费劲编译源码,首先,OpenCV官网对于每个版本只提供了一到两个VS版本,很多情况下,我们不一定安装有对应的VS版本;其次,当我们开发到一定阶段,官网提供的编译库不能满足我们的需求,比如使用GPU,OpenGl,使用TBB加速等,如果读者朋友还没有听过这些名词,不要紧,你可以先尝试着在网上搜素相关名词,了解其中的用途,也可关注笔者,笔者会在其他的文章中讲解这些概念和用法。基于以上两点原因,我想大家也就明白为何哟啊编译源码了吧,接下来,就跟着笔者尝试编译源码吧。

1.2.1 CMake简介

CMake,是“crossplatform make”的缩写,它是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake 和 SCons 等其他类似系统的区别之处。

1.2.2 CMake安装

首先下载Camke软件,目前(2017-11-6)最新的版本是3.10.0-rc4。下载链接:https://cmake.org/download/,进入下载页面后,可以看到Cmake的Source distributions处可以下载到Cmake软件的源码,如果对这款开源软件感兴趣,不妨看看。

这里写图片描述

图1-14

而Binary distributions处可以下载到Cmake的执行文件,我们只需要下载到其执行文件即可,选择Windows win64-x64 Installer进行下载,笔者的64位电脑,所以下载的是64位的。
这里写图片描述

图1-15

下载可执行文件后,接下来就是安装了,安装很简单,笔者就不纤细介绍了。安装完成后,接下来就是使用CMake生成OpenCV源代码工程的解决方案

1.2.3 CMake生成OpenCV源代码工程的解决方案

【第一步】运行cmake-gui
如果在安装时没有生成桌面快捷方式,在安装路径下寻找。运行后得到如下的窗口。

这里写图片描述

图1-16

【第二步】指定OpenCV的安装路径
如下图,点击红色方框内的“Browse Source”按钮,在弹出的对话框中指定出OpenCV安装时源代码的存储路径。以版本OpenCV 3.3.1安装在D:\下为例,则在此选择路径:D: \opencv-3.3.1。
这里写图片描述

图1-17

在该路径下有一个名为CMakeLists.txt的文件,该文件就是给CMake留下的配置文件,CMake可以根据这个配置文件,通过不同的编译器选择,来生成不同的解决方案,VisualStudio的编译器对应的就生成Visual Studio版的sln解决方案。
这里写图片描述

图1-18

【注】笔者在这里使用最新的Opencv安装包-3.3.1(注意和使用库路径安装方式进行比较,这里是下载源码)。
这里写图片描述

图1-19

【第三步】指定解决方案的存放路径
如下图,点击红色方框内的“Browse Build”按钮,在弹出的对话框中指定我们存放生成的opencv解决方案的路径。比如E:/opencv。
这里写图片描述

图1-20

【第四步】第一次Configure
如图,第一次点击Configure按钮。
这里写图片描述

图1-21

弹出如下进行编译器选择的对话框:
这里写图片描述

图1-22

首先选定“Use default native compilers”,然后,我们可以发现下拉列表中提供了几十种编译器给我们选择,因为我们安装了Visual Studio,会默认为我们选择好对应版本的Visual Studio编译器,比如Visual Studio 12(即待会儿会生成对应VS2012的sln解决方案)确认无误后,单击“finish”按钮。于是,CMake开始第一次源代码配置过程:
这里写图片描述

图1-23

【注意】在安装CMake或者OpenCV不要出现中文路径,否则可能出现不可预料的错误。
看到进度条读到尽头,出现了Configuring done字样,第一次的源码配置就完成了,如图所致。
这里写图片描述

图1-24

【第五步】第二次Configure
第一次配置完成之后,我们还需要进行第二次配置,于是再次点击“Configure”按钮。这次的配置是很快的,很快再次出现“Configuring done”字样,并且红色的选中部分都正常了。
这里写图片描述

图1-25

【第六步】点击Generate
点Generate按钮,来生成最终的解决方案了。
这里写图片描述

图1-26

这里写图片描述

图1-27

看到Generating done字样,就表示大功告成,可以去之前我们指定的E:\opencv下找寻我们生成的解决方案了。
这里写图片描述

图1-28

1.2.4编译OpenCV.sln

打开生成的Opencv工程,选择CMakeTargets下INSTALL,右键“生成”,生成Debug版dll,lib。切换编译模式为Release模式,重复上一步生成Release版dll,lib。(如果使用Debug就不需要编译Release版本了)
编译完成后就能看到最终Debug版和Release版(如果选择编译了)的dll,lib,以及文档目录doc,头文件目录include(bin内为两个版本dll,lib内为两个版本lib)。
编译后的目标库在E:\opencv\install文件夹下,具体路径是选择的路径决定。接下来的配置和库路径的配置方式相同,这里编译后的install文件夹就相当于win pack包的build文件夹,所以博主就不在重复了,不明白前看前文。