OpenCV4入门003:编译源码

系列索引:系列索引地址

编译

入门OpenCV开发的第一步是进行编译,如果你不需要太个性化的配置可以直接跳过本部分使用官方安装包或者Linux发行版仓库的软件包,如果你需要CUDA支持等等可以继续。

下载源码

自己编译源码的话需要下载两部分源码,一个是官方主仓库,另一个是contrib仓库。

主仓库

1
git clone https://github.com/opencv/opencv

如果国内下载太慢可以考虑去码云中下载。

1
git clone https://gitee.com/mirrors/opencv

contrib仓库中包含待测试的代码、没有版权的算法等等

1
git clone https://github.com/opencv/opencv_contrib

同样的,码云地址

1
git clone https://gitee.com/mirrors/opencv_contrib

主仓库大约100M左右,contrib仓库大约50M。

配置

使用cmake来配置生成编译需要的MakeFile文件。

根据个人需要,配置之前安装Intel mkl tbb等库。

然后打开cmake工具进行配置,选择附加模块,支持cuda等等。

Linux

Linux下比较简单,直接配置完成后执行

1
make -j20

编译时间根据配置不同而不同,我的时间是17:49~18:53共计64分钟。

安装时间为3分钟。

OpenCV代码每天都在更新,就不提供结果文件下载了。

作为开发者,编译自己想要的库是必备的技能,如果是新手只需要使用官方打包好的就可以了。

Windows

名称参数备注
CPUi7 9750h
内存16G
显卡英伟达1660Ti
cmake3.15.0
opencv4.1.0
qt5.12.3
mingw7.3.0qt安装的时候mingw选择一起安装就好了

预处理

解压下载的源代码

src

创建build文件夹作为编译目录

打开cmake-gui进行预处理

cmake

编译

先打开PS,进入build目录

dir

编译问题一、编译到35%的时候显示:

1
D3D11_TEXTURE2D_DESC’ was not declared in this scope

error1

退出报错:

1
2
3
mingw32-make[2]: *** [modules\world\CMakeFiles\opencv_world.dir\build.make:502: modules/world/CMakeFiles/opencv_world.dir/__/core/src/directx.cpp.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:2124: modules/world/CMakeFiles/opencv_world.dir/all] Error 2
mingw32-make: *** [Makefile:162: all] Error 2

解决:

显示未定义,但是不知道头文件在哪,所以解决方法就是取消这部分功能

fix

将d3d11_nv取消就可以了

编译结果

result

安装编译结果

1
mingw32-make install

result

库文件

result

将库文件复制到其他目录待用