OpenCV 是一个计算机视觉库,它提供了很多图像处理、机器学习等通用的算法,而且提供了 C++, Python, Ruby 等语言的接口。我们可以在 官网 上查看你想知道的信息。现在最新版本为 3.2.0,用过之后才感觉 OpenCV 的强大啊。
环境搭建
很多人想用 OpenCV,但或许就栽到了环境搭建这第一步了,但我觉得现在这个版本搭建起来还是挺方便的,在官网上有各种系统和编译器的搭建指导(点这里)。我使用的是 Windows + VS2017,所以在接下来的系列文章中,没有特殊说明,我使用的都是 C++ 接口。环境搭建主要参考了 这篇教程 和 这篇教程。
首先我们可以在 RELEASES 页面下载最新的版本,我下载的是 Win pack。下载完成后,我们打开它解压到一个目录:
比如我解压到 H:\ ,那么在 H:\ 目录下就会有个 opencv 文件夹,我们打开它可以看到里面有一个 build 文件夹,里面是已经构建好的各种东西。build 文件夹里面的 include\opencv2 就是 OpenCV 的各种头文件。还有个 x64\vc14,这是给 vs2015(或以上)在 x64 平台上使用的各种东西(.dll,.lib文件等),我们会注意到,有一些文件非常相似,就是结尾有没有 d 的差别,如 opencv_world320.lib 和 opencv_world320d.lib,要注意,以 d 结尾的,是给 Debug 模式使用的,没有 d 结尾的则是给 Release 模式使用的,要注意这个区别,下面会用到。
接下来就是配置环境变量,可以参考 这个部分 和 这个部分,当然如果你不想看,我可以简单的告诉你要做的事情:
先添加一个环境变量指定到
OpenCV的目录
这里不一定要按上面教程上的来,例如我是添加了一个OpencvDir变量,值为H:\opencv\build,为什么要加这个环境变量呢?其实也可以用绝对路径,添加这个环境变量的目的是当你opencv这个目录路径变化时,不用全部与之相关的东西都要改,只需要改这个环境变量的值就可以了。
把
opencv\build\bin路径加入到系统的Path中
这是因为要使用到里面的动态库(.dll文件)。如果运行提示缺少.dll,就要去看看这个环境变量有没有设置正确了。配置
vs项目属性
打开vs,新建一个项目,我们先把解决方案配置为Debug|x64。要使用opencv,简单来说就是要解决两件事:
- 告诉编译器在哪里找到
opencv库 - 告诉链接器在哪里找到
opencv库里面各种函数与数据结构的原型
具体要做的有三件事:
打开项目属性,在C/C++->常规(General)选项卡中,编辑附加包含目录(Additional Include Directories),加入opencv\build\include这个目录,对应我自己的环境变量,我就加入$(OpencvDir)\include。
打开链接器(Linker)->常规(General)选项卡,编辑附加库目录(Additional Library Directories),加入opencv\build\x64\vc14\lib这个目录,对应我自己的环境变量,我加入的是$(OpencvDir)\x64\vc14\lib。
打开链接器(Linker)->输入(Input)选项卡,编辑附加依赖项(Additional Dependencies),然后把x64\vc14\lib里面的opencv_world320d.lib这个文件加入进去,因为我们配置的是Debug模式,就加入对应的这个.lib文件。
至此,OpenCV 在 vs 上的环境算是搭建好啦!有一些需要注意的点:
※ 哪个模式就添加哪个模式对应的 .lib 文件,Debug 模式就要添加 opencv_world320d.lib 的。改了模式就要把上述的重新配置一遍。
※ 如果在打开 vs 的时候去修改了环境变量,vs 不会自动更新,需要重启 vs。
使用 OpenCV
我们马上来运行一个简单的例子吧:显示图片。
首先,找一张图片放到跟 main() 函数同级的目录下,然后输入以下这段代码:
按下 Ctrl + F5 运行,成功后你就能看到这样的画面啦!
学习 OpenCV
刚搭建好环境,我就把 Tutorials 里的 Image Processing 部分基本都跑了遍,包括平滑处理、形态变换、二值化、加边框等等,还是挺好玩,也挺好奇的。
耐心探索,OpenCV 还有非常多强大的功能,我主要会通过以下三个网站学习:
- 官方网站:http://opencv.org/
OpenCV中文网:http://www.opencv.org.cn/CSDNOpenCV知识库:http://lib.csdn.net/base/opencv
可以开始尽情的玩耍啦 o( ̄▽ ̄)ブ
