准备工作
-
D盘新建一个opencv目录,然后去下载opencv最新版以及扩展包。下载链接,下载“opencv-4.6.0.tar.gz”与“opencv_contrib-4.6.0.zip”即可。
-
在opencv的build/x64下面新建一个mingw目录。
-
下载并安装cmake
-
下载并安装Mingw64,链接,解压到某个路径,并将对应的bin路径添加到path环境(我下载的是GCC 11.2.0 + MinGW-w64 10.0.0 (UCRT) - release 1)。
正式编译
CPU版本编译
- 打开Cmake-GUI,选择code路径,“D:/opencv/opencv-4.6.0”,选择target路径“D:/opencv/build/x64/mingw”(该路径要是不存在就自己建一个)。
- 点击“Add Entry”,type选择“Path”,然后name填为:
OPENCV_EXTRA_MODULES_PATH
,value填为opencv_contrib解压后的路径,然后默认添加“modules”即可,例如D:/opencv/opencv_contrib-4.6.0/modules
- 点击“Configure”,选择“mingw makefiles”, 选择第二个“Specify native compile”,分别选择c对应gcc.exe所在路径,以及c++对应的g++.exe所在路径。点击“Finish”即可,然后等待1分钟,等待配置完成。
- 终端进入目录编译路径,如"D:\opencv\build\x64\mingw",然后输入下面的命令正式多线程编译(如果不识别,大概率是你没有将MinGW的bin路径放到path环境)。
mingw32-make.exe -j10
- 正式安装,最后会生成一个install目录,然后就可以使用了。
mingw32-make install
- 将Instal下面的bin目录放到path环境,不然编译后的程序会提示找不到lib。比如我的路径是“D:\opencv\build\x64\mingw\install\x64\mingw\bin”
GPU版编译
- 找到你的cuda安装路径,比如我装的默认路径“C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6”
- 在opencv4.6的源码路径下,新建一个build文件夹,然后终端进入该文件夹。比如我的是“D:\opencv\opencv-4.6.0\build”
- 确保你已安装Visual Studio 2019,并且将对应的cl.exe文件所在路径放置到path环境下面。我的cl.exe文件路径参考“C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe”
- 然后,终端进入build目录"D:/opencv/opencv-4.6.0/build"(没有就创建一个),在powershell执行下面这个命令,开始配置cmake信息。
cmake `
-D CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE `
-D CUDAToolkit_ROOT="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6" `
-D WITH_CUDA=ON `
-D OPENCV_EXTRA_MODULES_PATH=D:/opencv/opencv_contrib-4.6.0/modules `
-D ENABLE_FAST_MATH=ON `
-D CUDA_FAST_MATH=ON `
-D WITH_CUBLAS=ON `
-D OPENCV_DNN_CUDA=ON `
-D CMAKE_BUILD_TYPE=Release `
..
- 最后开始编译
cmake --build . -- -j10
测试与使用
CPU版测试
- 打开VScode编写一个demo.cpp文件,内容如下(图片路径建议绝对路径