Fork me on GitHub

OpenCV 笔记(零):启程

OpenCV 是一个计算机视觉库,它提供了很多图像处理、机器学习等通用的算法,而且提供了 C++, Python, Ruby 等语言的接口。我们可以在 官网 上查看你想知道的信息。现在最新版本为 3.2.0,用过之后才感觉 OpenCV 的强大啊。

环境搭建

很多人想用 OpenCV,但或许就栽到了环境搭建这第一步了,但我觉得现在这个版本搭建起来还是挺方便的,在官网上有各种系统和编译器的搭建指导(点这里)。我使用的是 Windows + VS2017,所以在接下来的系列文章中,没有特殊说明,我使用的都是 C++ 接口。环境搭建主要参考了 这篇教程这篇教程

首先我们可以在 RELEASES 页面下载最新的版本,我下载的是 Win pack。下载完成后,我们打开它解压到一个目录:
opencv_extract

比如我解压到 H:\ ,那么在 H:\ 目录下就会有个 opencv 文件夹,我们打开它可以看到里面有一个 build 文件夹,里面是已经构建好的各种东西。build 文件夹里面的 include\opencv2 就是 OpenCV 的各种头文件。还有个 x64\vc14,这是给 vs2015(或以上)在 x64 平台上使用的各种东西(.dll,.lib文件等),我们会注意到,有一些文件非常相似,就是结尾有没有 d 的差别,如 opencv_world320.libopencv_world320d.lib,要注意,以 d 结尾的,是给 Debug 模式使用的,没有 d 结尾的则是给 Release 模式使用的,要注意这个区别,下面会用到。

接下来就是配置环境变量,可以参考 这个部分这个部分,当然如果你不想看,我可以简单的告诉你要做的事情:

  1. 先添加一个环境变量指定到 OpenCV 的目录
    这里不一定要按上面教程上的来,例如我是添加了一个 OpencvDir 变量,值为 H:\opencv\build,为什么要加这个环境变量呢?其实也可以用绝对路径,添加这个环境变量的目的是当你 opencv 这个目录路径变化时,不用全部与之相关的东西都要改,只需要改这个环境变量的值就可以了。
    environment variable

  2. opencv\build\bin 路径加入到系统的 Path
    这是因为要使用到里面的动态库(.dll文件)。如果运行提示缺少 .dll,就要去看看这个环境变量有没有设置正确了。

  3. 配置 vs 项目属性
    打开 vs,新建一个项目,我们先把解决方案配置为 Debug|x64。要使用 opencv,简单来说就是要解决两件事:

  • 告诉编译器在哪里找到 opencv
  • 告诉链接器在哪里找到 opencv 库里面各种函数与数据结构的原型
    具体要做的有三件事:
    打开项目属性,在 C/C++ -> 常规(General) 选项卡中,编辑 附加包含目录(Additional Include Directories),加入 opencv\build\include 这个目录,对应我自己的环境变量,我就加入 $(OpencvDir)\include
    Additional Include Directories
    打开 链接器(Linker) -> 常规(General) 选项卡,编辑 附加库目录(Additional Library Directories),加入 opencv\build\x64\vc14\lib 这个目录,对应我自己的环境变量,我加入的是 $(OpencvDir)\x64\vc14\lib
    Additional Library Directories
    打开 链接器(Linker) -> 输入(Input) 选项卡,编辑 附加依赖项(Additional Dependencies),然后把 x64\vc14\lib 里面的 opencv_world320d.lib 这个文件加入进去,因为我们配置的是 Debug 模式,就加入对应的这个 .lib 文件。
    Additional Dependencies

至此,OpenCVvs 上的环境算是搭建好啦!有一些需要注意的点:
※ 哪个模式就添加哪个模式对应的 .lib 文件,Debug 模式就要添加 opencv_world320d.lib 的。改了模式就要把上述的重新配置一遍。
※ 如果在打开 vs 的时候去修改了环境变量,vs 不会自动更新,需要重启 vs

使用 OpenCV

我们马上来运行一个简单的例子吧:显示图片。
首先,找一张图片放到跟 main() 函数同级的目录下,然后输入以下这段代码:

1
2
3
4
5
6
7
8
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
// 把下面的 1.jpg 改成自己的图片的名称
Mat img = imread("1.jpg");
imshow("图片", img);
waitKey();
}

按下 Ctrl + F5 运行,成功后你就能看到这样的画面啦!
Demo

学习 OpenCV

刚搭建好环境,我就把 Tutorials 里的 Image Processing 部分基本都跑了遍,包括平滑处理、形态变换、二值化、加边框等等,还是挺好玩,也挺好奇的。

耐心探索,OpenCV 还有非常多强大的功能,我主要会通过以下三个网站学习:

可以开始尽情的玩耍啦 o( ̄▽ ̄)ブ

-------------------------------- 全文完 感谢您的阅读 --------------------------------
「写的那么辛苦,连一块钱都不打赏吗/(ㄒoㄒ)/~~」