在 OpenCV 官方网站(https://opencv.org/)可以下载最新的且完整的源码以及大部分的 release 版本源码。具体的下载链接可以通过下载页面(https://opencv.org/releases.html)访 问。 当然,最新的代
当然,最新的代码也会在 github(https://github.com/opencv/opencv)上进行即时更新。如果想要获取最新的高级函数功能,也可以下载和编译 open_contrib 模块(https://github.com/opencv/opencv_contrib)。
安装
现在,OpenCV 使用 Git 作为版本管理工具,使用 Cmake 来构建工程。在早些时候,OpenCV 开发者使用 Subversion 作为版本管理工具以及 automake 来构建工程项。当然,这些日子都一去不复返了。
在许多情况下,你不必担心构建问题,因为许多环境中都有预编译好的库。但是,一旦成为更加专业的使用者,势必需要重新编译库,并且根据具体的应用程序定制特定的选项。
在 Windows 系统下安装 OpenCV
在 https://opencv.org/releases.html 可以发现最新的为 Windows 准备的最新版本 OpenCV 下载链接。可以通过这个链接下载一个 EXE 文件,该文件会把预编译好的 OpenCV 解压到你的电脑上,预编译版本支持不同版本的 Visual Studio 环境。现在,你很快就可以开始使用 OpenCV了。注意:尽管 Windows 环境拥有预编译的 release 版本的库,但是它并不包含 debug 版本的库。所以,在开发 OpenCV 之前,需要打开解决方案并且自行编译那些库。另一个额外的细节是,需要再添加一个名为
OPENCV_DIR
的环境变量来告诉编译器在哪里找到 OpenCV 的二进制文件。可以通过命令行工具(cmd)对此进行设置。
setx -m OPENCV_DIR D:\OpenCV\Build\x64\vc10
如果希望静态链接 OpenCV,就只需要做到这一步。如果希望使用 OpenCV 的动态链接库(DLL),就需要告诉系统在哪里找到它的二进制库。为了完成这一目标,只需要在库路径中添加%OPENCV_DIR%\bin
。以 Windows 10 为例,具体操作步骤是:右击计算机图标,选择“属性”,然后单击“高级系统设置”,最后选择“环境变量”,把 OpenCV 二进制文件的路径
%OPENCV_DIR%\bin
添加到 path 变量中。OpenCV3 集成了 IPP,所以如果使用最新的 x86 或者 x64 CPU,就可以获得或多或少的性能优势。
从源代码编译 OpenCV
也可以按照如下操作从源码编译 OpenCV,具体步骤是:- 运行 CMake GUI。
- 指定 OpenCV 源码所在路径以及构建目标文件夹(必须和源码所在路径不同)。
- 按两次 Configure 键(选择可以使用的 Visual Studio 编译器或者 MinGW 构建文件,如果正在使用 MinGW 的话),直到所有条目没有红色警示。
- 使用 Visual Studio 打开生成的解决方案并构建。如果使用的是 MinGW,则按照 Linux 的安装指导进行。
Linux 系统下安装 OpenCV
由于 GCC 和 GLIBC 在不同 Linux 版本(SuSE、Debian、Ubuntu 等等)下拥有不同的版本,所以 OpenCV 的 Linux 的预编译版本不包含 Linux 的版本号。然而,在很多情况下,你的 Linux 版本会提供 OpenCV。如果你的版本不提供 OpenCV,你将不得不从源代码中构建,与 Windows 安装一样,可以从 https://opencv.org/releases.html 下载源代码,但是在这种情况下,该链接会把你转向 SourceForge,在这里可以为当前的 OpenCV 源代码选择压缩文件。
为了编译这个库和示例程序,你需要准备很多库或者工具,其中包括:
- GTK+ 2.x 或者更高的版本;
- GCC 编译器;
- cmake 构建工具;
- libtbb(英特尔线程构建模块);
-
还有一些可选项目,例如 zlib、libpng、libjpeg、libtiff 和 libjasper 的开发者版本(例如模块名称后带有
-dev
的版本); - 你也需要用到 Python 2.6 或者更高的版本(开发者包)以及 NumPy 使 OpenCV 可以在 Python 环境下工作;
- 此外,还需要来自 ffmpeg 的 libavcodec 以及其他的 libav* 库(包含头文件)。
对于后者,请安装 Linux 发行版本所提供的 libav/ffmpeg 包,或者前往 http://www.ffmpeg.org 下载。ffmpeg 库拥有较低的通用公开(LGPL)许可证,但是它的一些组件拥有更严格的通用公开许可证(GPL)。为了结合使用非 GPL 的软件,你需要构建并且使用一个共享的 ffmpeg 库:
$> ./configure --enable-shared
$> make
$> sudo make install
当动态链接一个 LGPL 的库时,不需要为自己的代码使用 GPL 许可证。最终得到:
- /usr/local/lib/libavcodec.so.*
- /usr/local/lib/libavformat.so.*
- /usr/local/lib/libavutil.so.*
- 以及在 /usr/local/include/libav* 路径下的头文件
为了编译这个库,需要解压 tar.gz 文件并且切换到解压过程创建的源码文件夹中,然后进行如下操作:
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install # optional
对指令的说明:
1) 第一个命令和第二个命令将创建名为 release 的子目录并且切换到 release 中。
2) 第三个命令告诉 cmak 工具如何设置你的工程。我们提供的例子可能是让你入门的正确方法,但是其他选项允许你启用更多的设置,例如:
- 确定哪些例子需要被构建;
- 添加对 Python 的支持;
- 添加 CUDA GPU 的支持。
默认情况下,OpenCV 的 cmak 配置脚本会尝试查找和使用尽可能多的第三方库,例如如果它探测到 CUDA SDK 的存在,就会自动支持 GPU 加速的 OpenCV 功能。
3) 最后两个指令将编译整个库并将其安装到正确的位置。注意,如果使用 CMake 来建工程,就没有必要安装 OpenCV,只需要指定生成的 OpenCVConfig.cmake 件的路径就可以了。在前面的例子中,文件将被安装在 /usr/local/share/OpenCV。
正如 Windows 的例子所示,Linux 建立的 OpenCV 将自动利用 IPP 进行加速(如果有安装的话)。从 OpenCV 3.0 版本开始,OpenCV 的 cmak 设置脚本将自动下载并且链接一个 IPP 的免费子库(IPPICV)。如果想要禁用 IPP 加速,请在执行 CMake 的时候加上
-D WITH_IPP=OFF
指令。
Mac系统下安装 OpenCV
在 Mac 上安装步骤和 Linux 上的安装步骤十分接近,不同的是,Mac 拥有自己的开发环境 Xcode,它包含大部分在 CMake 过程中需要的东西。你不需要 GTK+、TBB、libjpeg,并且:
- 在默认情况下,Cocoa 会取代 GTK+;
- 在默认情况下,QTKit 会取代 ffmpeg;
- GDC 会取代 TBB 以及 OpenMP。
安装步骤和 Linux 下安装一致。需要添加-G Xcode 指令到 CMake 中来生成一个 Xcode 工程,从而可构建和 debug 工程。
从 Git 获取最新的 OpenCV
OpenCV 现在也处于积极的开发状态中,当 bug 报告中包含有准确的描述以及代码复现 bug 的时候,该 bug 通常会被迅速修复。然而,官方的 OpenCV 通常每年只发布一次到两次,如果你正在开发一个项目或产品,可能想要 OpenCV 能够尽快修复 bug 并更新。为了完成这些目的,需要在 GitHub 网站上访问 OpenCV 的 Git 仓库。本节并不打算引导你如何使用 Git,如果你还在使用另外的一些开源项目,也许对这套操作已经很熟悉了。
Git 的命令行工具有 Linux、Mac OS X 以及大部分的类 UNIX 系统所支持。针对 Windows,我们推荐 TortoiseGit(https://tortoisegit.org/);针对 Mac OS X,SourceTree 也许适合。
在 Windows 上,如果想要从 Git 获得 OpenCV 最新的版本,你需要访问 https://github.com/opencv/opencv.git。
在 Linux 上,只需要输入如下指令:
git clone https://github.com/opencv/opencv.git