OpenCV新手超精确安装过程

引言

哈,谈到当前最火的人工智能,就一定离不开计算机;谈到计算机,就离不开图像处理;谈到图像处理,就离不开OpenCV。作为开源计算机视觉库,这是几乎所有学习图像处理的学生绕不开的东西。
然而,开始入手就遇到个问题,这玩意儿不好安装啊。。。也没有其他人能帮我,我只能百度来解决问题喽,然后惊奇的发现,问题越解决越多,但我得毕业啊,就算安一年也得安上是吧,干脆毕设论文就写《OpenCV安装及自我反思》。
行吧,接下来我就分享一下OpenCV精确的安装过程。
那个啥,我建议各位先看看总结
word下载(那个啥,是个资源总目录,当然了也没几个资源,所以蛮好找的)
OpenCV超精确安装过程.doc

安装准备

我是以visual studio2015,OpenCV2.4.13为基础进行安装,其余版本也是类似的。对于3.x的版本(表示3.0之后的版本)我之后会特别点出的。

OpenCV下载

下载地址就在这(这是3.4.1版本的,需要其余版本的自己在里面找就行了),点它
OpenCV官网

下载完之后解压就好了

环境变量

首先要更改计算机的环境变量,这个我是乖乖做了,所以我也不知道不弄会什么结果,但我劝你也乖一点。
计算机(右键)–>属性–>高级系统设置–>环境变量–>系统变量

OpenCV新手超精确安装过程

点击编辑来添加路径这个路径在刚才解压缩的opencv文件夹当中

例如我的路径为:D:\software\OpenCV\opencv\build\x86\vc12\bin

对于64位系统的最好两个都加上:

D:\software\OpenCV\opencv\build\x86\vc12\bin

D:\software\OpenCV\opencv\build\x64\vc12\bin

至于文件中出现的x86和x64是指你的系统是32位还是64位

而vc10,vc11,vc12代表了vs2010,vs2012和vs2013,对于vs2015你用vc12也是可以的。
在3.x的版本中会出现对应于vs2015甚至vs2017的文件夹VC14和VC15

环境变量配置完需要重新启动或注销电脑

安装开始

1、建立项目

打开VS2015,建立一个项目,比如我命名为ppp,然后随便保存个地方
OpenCV新手超精确安装过程
接下来,点成空项目,这个其实随便,然后完成就行了
OpenCV新手超精确安装过程

2、引用OpenCV库

目录篇

右击ppp项目,点击属性,在属性页里点击VC++目录
OpenCV新手超精确安装过程
然后点击包含目录的下拉按钮打开编辑菜单

OpenCV新手超精确安装过程
点击新建文件夹按钮来寻找文件夹位置
OpenCV新手超精确安装过程
如图中所示,我的是

D:\software\OpenCV\opencv\build\include

D:\software\OpenCV\opencv\build\include\opencv

D:\software\OpenCV\opencv\build\include\opencv2

ps.1、这个位置是我加完再截图的,一开始包含目录是空白的需要你自己添加;
2、 准确的说,你需要的是opencv\build\include,opencv\build\include\opencv,opencv\build\include\opencv2这三个文件夹,毕竟OpenCV解压位置不一样么,我是解压到了D:\software\OpenCV,所以才有这个前缀。

好的,接下来是下方的库目录,同样的操作来添加lib路径
我的是D:\software\OpenCV\opencv\build\x86\vc12\lib,操作和上面一样,结果如下
OpenCV新手超精确安装过程
当然在这里会有一个问题,在找的时候会发现

OpenCV新手超精确安装过程
一个是x64文件夹,一个是x86文件夹,那么选哪个呢,一般大家都喜欢x86的就直接点x86文件夹了,但是高版本OpenCV,比如3.3.1版,你会发现
OpenCV新手超精确安装过程
只有x64文件夹,是不是很惊喜,这时候就会产生第一个小错误——环境不匹配
那么,对于高版本这种情况怎么解决,其实这个想的是生成的程序是32位还是64位,x86文件夹对应32位的,x64文件夹对应64位的,对应位置就是

OpenCV新手超精确安装过程
如果库目录引的是x86文件夹里的lib,就这样就行了,如果引得是x64文件夹里的lib文件夹,那就要把那个x86改成x64了,有时候会遇到问题,会发现有的vs没x64,那点击下拉菜单的配置管理器把x64调出来,点击活动解决方案平台

OpenCV新手超精确安装过程
啊,如果这里还没,可能你vs里没有安装x64,安一个就行了

链接器篇

OpenCV新手超精确安装过程
操作很和目录很像
对于这个,我们需要把一些东西添加到附加依赖项,如刚才图所示我现在是在Debug模式,所以把下面的复制粘贴到附加依赖项里,确定就行了。

opencv_calib3d2413d.lib

opencv_contrib2413d.lib

opencv_core2413d.lib

opencv_features2d2413d.lib

opencv_flann2413d.lib

opencv_gpu2413d.lib

opencv_highgui2413d.lib

opencv_imgproc2413d.lib

opencv_legacy2413d.lib

opencv_ml2413d.lib

opencv_nonfree2413d.lib

opencv_objdetect2413d.lib

opencv_ocl2413d.lib

opencv_photo2413d.lib

opencv_stitching2413d.lib

opencv_superres2413d.lib

opencv_ts2413d.lib

opencv_video2413d.lib

opencv_videostab2413d.lib

OpenCV新手超精确安装过程
解释一下,如opencv_core2413d.lib
opencv_core是OpenCV里库的名字,不用管;
2413是OpenCV版本(我是2.4.13版本),如果是3.3.1版本,改成331就好了;
2413后面有个d,这个是对应debug模式(一会儿说的Realease模式没有d)

对于3.x版本,不需要这么多,如3.3.1版本只需要在附加依赖项里加
opencv_world331d.lib
一个就OK了

3、测试程序

好了,至此基本配置结束,建一个cpp文件运行下面的程序吧


#include<iostream>  

#include <opencv2/core/core.hpp>  

#include <opencv2/highgui/highgui.hpp>  
using namespace cv;
int main()

{

    // 读入一张图片(游戏原画)  

    Mat img = imread("ScreenShot0.png");

    // 创建一个名为 "游戏原画"窗口 


    namedWindow("游戏原画");

    // 在窗口中显示游戏原画  

    imshow("游戏原画", img);

    // 等待6000 ms后窗口自动关闭  

    waitKey(6000);

    destroyWindow("游戏原画");

    return 0;

}


其余的地方总是显示内存出错,那是因为没有 destroyWindow(“游戏原画”);没有销毁窗口,我在这里加上了。
解释一下,这里你首先要随便找一张png图片,命名为ScreenShot0,然后将这张图片和你的.cpp文件要放在一个文件夹里,比如我建立了一个源.cpp的文件,所以我要把ScreenShot0.png放在如下图,然后运行就行了

OpenCV新手超精确安装过程

你如果以为现在就结束了,啊哈哈哈哈哈哈哈,那还叫什么精确教程,接下来会有几个问题是要注意的

问题答疑

1、Debug模式和Realease模式

如果把debug模式改成Realease模式
OpenCV新手超精确安装过程
你会发现程序会运行失败,显示找不到库,那么现在怎么做呢,很简单,按照上述操作重新配置一遍。。。。
因为Debug和Realease两个模式么,你刚才配置的是Debug模式的,现在切换成了Realease了,系统不承认你刚才的配置了,重新来一遍的少年
啊对了,正如我刚才提到的,Realease模式下在附加依赖项里,你要把d去掉

opencv_calib3d2413.lib

opencv_contrib2413.lib

opencv_core2413.lib

opencv_features2d2413.lib

opencv_flann2413.lib

opencv_gpu2413.lib

opencv_highgui2413.lib

opencv_imgproc2413.lib

opencv_legacy2413.lib

opencv_ml2413.lib

opencv_nonfree2413.lib

opencv_objdetect2413.lib

opencv_ocl2413.lib

opencv_photo2413.lib

opencv_stitching2413.lib

opencv_superres2413.lib

opencv_ts2413.lib

opencv_video2413.lib

opencv_videostab2413.lib
同样对于3.3.1版本只需要
opencv_world331.lib

2、缺少.dll库

首次运行可能会提示缺少.dll库,如MSVCP120D.dll、MSVCR120D.dll等动态链接库,出现此类情况可在网上下载相对应的动态链接库,然后放入系统文件
对于32位操作系统放入:C:\Windows\System32
对于64位操作系统放入:C:\Windows\SysWOW64
其实这个么,我也没太搞清放在哪,本着负责任的态度,我建议你两个文件夹都试试,反正都复制粘贴么是不是,知道这个缺少提示没了,说明放对了!

3、在运行OpenCV程序时报错:“无法启动此程序,因为计算机中丢失opencv_world310.dll。请尝试重新安装改程序已解决此问题”

在安装3.x版本的OpenCV时可能遇到这种问题,2.x的可能不会有,有的话方法一样
将bin目录(:\OpenCV\build\x64\vc12\bin)中所有的.dll文件(3.x版本的只有3个.dll文件,2.x的就比较多)复制到(C:\Windows\System32)或(C:\Windows\SysWOW64)中。
不好意思,其实这个也没搞清楚,本着负责任的态度,我建议你两个文件夹都放进去算了哈哈哈哈哈哈!

快速安装(懒人专用)

1、使用NuGet

各位懒蛋你们好,如果你觉得上述安装麻烦的话,直接看这里就行了,不好意思我就是要把它放在最后!
你需要有一个高版本的VS,比如VS2013及以上,这时候你会发现里面有NuGet,哎呦这个东西可是方便哟是不是
先连上互联网,然后新建一个项目
然后点击菜单栏里的项目——管理NuGet程序包,然后搜索下面两个东西,然后安装就行了,一切设置会自动配置至package你就不用管了

OpenCV新手超精确安装过程
安装完成后,一般会自动生成依赖项,但总是有个不一般是不是,这时候你就
右击项目——生成依赖项——自定义
然后点击查找现有的,找到自己的这个项目里,然后找
opencv3.1.0\build\native\opencv3.1.targets
欧克,至此就结束了
程序也能运行

2、一劳永逸

每次建一个项目就要重新配置一次,建一个配置一次,感觉好麻烦,所以接下来
先新建一个项目再说。。。。
然后打开这个项目的属性管理器
OpenCV新手超精确安装过程
右击Microsoft.Cpp.Win32.user,点属性,然后一切按照最开始的那些方法进行配置,那么debug-x86环境下的OpenCV就配置OK了
也就是下图这个模式
OpenCV新手超精确安装过程
当然了,正如前面提到的,你可能会是x64,也可能会是release,没关系,点击对应的文件夹就行了,你这么聪明应该能明白是吧。

总结

咳咳,各位看官,如果您看的开心,就下载一下我的word文件么,我也需要一点积分过日子啊,你看下载了word能在电脑上看,还能在手机上看,能坐着看也能躺着看,多好!
好吧其实我是因为没积分了然后写了这篇教程哈哈哈哈哈哈哈哈