作者使用OpenCV版本3.4.0,如果只用到OpenCV的基本功能,直接使用解压后的build文件夹中的*.lib和*.dll即可,不需要进行下面这些复杂操作。
Contrib版本3.4.0这个一定要和OpenCV版本相同以防出错
CUDA版本8.0
TBB版本tbb2018_20180822oss_win,也可以下载其它版本。TBB可用于OpenCV加速,不需要的话可以不编译,下载后直接解压即可,不需要添加环境变量。
Cmake版本为3.15.3,作者编译时可下载的最新版本。
-
打开cmake在where is the source code中选择OpenCV3.4.0的sources文件夹,在where to build the binaries文件夹选择存放cmake生成工程文件的文件夹,可以事先新建好,也可以填上路径和文件夹名cmake会帮你新建,注意这两个路径中不要有中文。
-
点击configure弹出如下对话框,根据电脑的编译软件选择红框部分内容,然后点击finish。
3.cmake进度条完后,可以滚动红色部分的滑动条,这些是cmake编译选项。其中BUILD_opencv_world,表示将所有的lib和dll文件编译为一个world.lib和world.dll,这个一般不要勾选,出错概率会比较大。
如果要在OpenCV 中加入contrib模块,在OPENCV_EXTRA_MODULES_PATH中选择Contrib3.4.0的modules文件夹。
如果要在OpenCV 中使用gpu加速模块,勾选WITH_CUDA。在此之前必须安装CUDA,不然编译器检测不到。
如果要在OpenCV 中加入TBB加速,勾选WITH_TBB。
-
再次点击configure,等待进度条走完。此过程要有网络连接因为,cmke会下载一些依赖文件,如ffmpeg,ippicv等,忘记截图了。下载的文件会存放在我们下载的OpenCV sources文件夹下,
cmake下载时会自动在source文件夹中新建.cache文件夹。下载过程会比较漫长,如果其中任意一个文件没下载完,就会导致后面的VS工程生成错误,所以这里一定要注意不能在下载这些文件时cmake不能报错,最好也不能有警告。如果OpenCV添加了contrib模块,cmake还会下载下图红框中的文件,同样也存放在.cache文件夹中。同样下载过程也很长,不能报错和警告。
-
如果步骤4没问题并且勾选了WITH_TBB,configure完后会显示下图红色内容。在TBB_ENV_INCLUDE中选择tbb文件夹中的include文件夹,如作者的为tbb2018_20180822oss_win\tbb2018_20180822oss\include。在TBB_ENV_LIB中选择tbb.lib文件,作者为tbb2018_20180822oss_win\tbb2018_20180822oss\lib\intel64\vc12\tbb.lib。在TBB_ENV_LIB_DEBUG中选择tbb_debug.lib,作者为tbb2018_20180822oss_win\tbb2018_20180822oss\lib\intel64\vc12\tbb_debug.lib。
-
再次点击configure,如果在configure过程中没有错误或警告,会显示如下对话框。如果红框中还有红色背景的地方,需要根据前面提示填写对应文件路径,再次点击configure直到红框中没有红色背景的内容。点击generate。如显示configuring done 和generating done则VS工程生成成功。如果在configuring done 和generating done之间还显示了一些别的内容,那么很可能cmake失败,建议检查问题。
-
cmake生成成功后,打开我们在where
to build the binaries时选择的文件夹,内容大致如下。选择OpenCV.sln用VS打开。
-
生成Debug库选择Debug,生成Release库选择Release,右键INSTALL点击生成。如果cmake过程中勾选了WITH_CUDA生成Debug和Release的库会各花费好几个小时。
-
生成完后,在OpenCV.sln所在文件夹下会生成install文件夹。重新配置OpenCV即可,其中路径需要选择install文件夹下的对应路径。具体过程可以参考https://blog.csdn.net/poem_qianmo/article/details/19809337。
主要内容为添加包含目录、库目录和附加依赖项。 -
cmake在编译含contrib和cuda的时候会在sources文件夹下自动下载一些文件,但过程比较慢或者不成功,可以直接下载这个压缩包https://download.csdn.net/my/downloads