本文介绍操作过程。
如果不想麻烦,可以用编译好的版本,可以省去诸多麻烦。百度网盘下载,提取码:3wv2
。
csdn 备用下载链接:https://download.csdn.net/download/runandrun/11038165
下载 vs2017
vs2017 下载页面,含 for mac 版
下载之后,只有1.22M,是在线安装版本,如果只是做 openCV 相关开发,建议安装内容:
- 勾选大红框的两个复选框。
- 如果要自己编译 OpenCV,再额外勾选win10SDK。
下载 opencv 和 opencv_contrib
- opencv 从官网下载即可,windows 环境,下载 Win pack 包,是一个自解压包,包括源码和编译之后的文件。
openCV官网下载页面 - opencv_contrib,官网没有编译版本,需要自己编译。记得下载的版本要和 openvc 完全一致。
opencv_contrib github 下载页面
下载我准备的三个文件,保证你喜欢
由于国内网络原因,从 github 下载非常慢, 我上午10点多开始,直到中午吃了个午饭回来还没有下载完。
百度网盘下载,提取码:3wv2
下载解压后会得到三个文件:
opencv+opencv_contrib-4.0.1+win10-x64+vs2017-build.zip
:我编译好的版本,理论上应该可以直接用,如果想要自己折腾,同时你的下载速度跟我一样,下面两个文件会帮到你。opencv_contrib-4.0.1.zip
cache.rar
:用 CMake 编译的时候,会有很多文件下载不下来,可能要反复下载才行,这个文件就是编译时需要的文件,解压后替换 openCV 源码目录下的.cache
目录,然后重新 Configure。
下载 CMake
java 和 python 环境
opencv 是支持 java 和 python 的,编译的时候会找相关的运行环境,我电脑上都配置了的。如果不配置不知道是什么情况,也许会跳过,如果只用 c++ 的话,跳过就跳过吧。
CMake 编译
打开解压目录下的 bin/cmake-gui.exe
Where is the source code
选择 opencv-4.0.1 的源码目录。Where to build the binaries
设置编译后的文件存放目录。- 点击
Configure
,通常由于网络问题,会有很多错,建议下载我的catch文件:百度网盘下载,提取码:3wv2
- 第一次点击需要设置 vs 版本。
- 完全没有错之后,设置三项:
- 找到
BUILD_opencv_world
项,打上勾。 - 找到
OPENCV_EXTRA_MODULES_PATH
项,设置为opencv_contrib
目录下的modules
文件夹。 - 找到
OPENCV_ENABLE_NONFREE
项,打上勾。
- 找到
- 设置好后再次点击
configure
按钮,然后点击generate
按钮。
踩的坑
- 提示:
Error in configuration process, project files may be invalid
。 - 是因为把
Where is the source code
设置成opencv_contrib
的源码目录了,其实是要选opencv
的源码目录。当时编译的是opencv_contrib3.1.0
。
vs2017 编译
准备好10G以上的硬盘空间。
- CMake 成功编译完成之后,会在输出目录(在
Where to build the binaries
设置)生成 visual studio 工程,直接在该目录打开解决方案:OpenCV.sln
(当然是用vs2017打开)。 - 在
Solution Explorer
窗口,解决方案右键->Build Solution
。这个过程很慢,如果报错,那是因为 CMake 编译的时候有错,需要仔细查看,通过不断的Configure
,把错误排除之后再重新Generate
直到成功就行了。出现错误,通常是因为有文件没有下载下来导致。
- 然后,选择菜单
Build->Batch Build...
。
- 勾选两个 INSTALL 项目->Build。
- 编译完成,会生成一个
install
目录,这个目录下的文件就是我们需要的库文件。可以把这个目录 copy 到某处并重新命名为opencv4.0.1
以备用。
配置 vs2017 环境
随便建一个项目,最好建一个空项目。一图胜千言,下面仅用截图来说明opencv
项目需要配置的项,就不详细写了,如果不明白,可以在网上找一下相关文章,挺多的。
需要注意的是,vs2017配置好之后,需要重启vs2017才生效。
我编译之后的目录是:C:\study\openCV\opencvv4.0.1_build\install
,我直接用的,下面的截图的目录就是这个,你需要替换成你自己的目录。
- 默认是x86,如果在 64 位操作系统下开发(应该都64位了吧,还有在32位操作系统下做开发的吗?),建议修改为x64,本文编译和配置都只针对x64
- 创建一个空项目
- 显示属性管理窗口
- 修改默认配置属性,Property Manager -> 展开项目 -> Debug | x64 -> Microsoftt.Cpp.x64.user -> 右键 -> Properties
- 配置 OpenCV 的包含目录,点击 Edit... 打开编辑配置窗口
- 要配置 include 目录本身,和该目录下的所有子目录,OpenCV4.x 的 include 下只有一个子目录,如图,而 OpenCV3.x 有两个,请根据实际情况配置。
- 配置 OpenCV 库目录,同样的,打开编辑配置窗口操作
- 复制文件名到这里,一行一个。这两个文件位于:CMake编译输出目录下/install/x64/vc15/lib。如果是 OpenCV3.x,则不能把 opencv_world345.lib 和 opencv_world345d.lib 同时加入,项目运行时会报错,只加带d的那个文件名,其中345是版本号。
- 操作系统环境变量,path 添加配置项
友情提示:看到这里,如果按照上面的步骤操作的,该重启 vs2017 了,重启之后配置才会生效。
测试
在刚才建的项目下,添加一个 cpp 文件,内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("C:/workspace/c++/images/img01.jpg");
imshow("opencv demo", src);
waitKey(0);
destroyAllWindows();
return 0;
}
其中 src 要指向你本地目录的一张图片。

改成x64正常编译之后运行,如果图片正常打开,恭喜你,配置正常,可以安心撸代码了。
后记
- 2019-04-12
新创建一个项目,找不到库引用。也就是说之前的配置没有生效。按照之前的操作,打开配置信息(位于Property Manager -> 展开项目 -> Debug | x64 -> Microsoftt.Cpp.x64.user -> 右键 -> Properties
),原来配置的信息都在。单独配置该项目
但是打开项目属性:Solution Explorer -> 在项目名下点击右键 -> Properties,发现相关配置信息都没有。于是在这里重新配置一遍,具体操作与之前的配置一样。如此操作之后,库引用就正常了。

后来我才发现,其实是我疏忽了一点,新创建的项目(解决方案),默认是 x86 的,而我之前配置的是 x64,这两种编译模式需要分别配置,x86 的还没有配置过,所以在 x86 模式下,库引用是找不到的。
所以,新创建的项目(解决方案),需要首先把编译模式选成 x64,改完之后,如果代码显示依然为红色(我用了 ReSharper 插件),重新打开工程即可。
当然,如果你在 32 位操作系统下做开发,操持默认就好,只是记得要针对 x86 做配置(位于
Property Manager -> 展开项目 -> Debug | Win32 -> Microsoft.Cpp.Win32.user
)。
