目录
1--从github下载OpenCV和相应的contrib包
这里博主使用的OpenCV版本为4.5.5:
OpecCV4.5.5下载地址
opencv_contrib4.5.5下载地址
这里博主下载的是Windows X64 installer(版本为3.25.0):
博主建议通过安装MSYS2来安装MinGW:
①将压缩包解压至新建的src文件夹,并新建一个build文件夹用于存放编译后的文件:

②对于OpenCV4.5.5,Where is the source code的路径是:src文件夹下OpenCV4.5.5的CMakeLists.txt路径,这里博主的路径是C:\ljf_file\Opencv4.5.5\src\opencv-4.5.5\opencv-4.5.5;
而Where to build the binaries的路径则是新建的build文件夹路径;

在Configure选择MinGW Makefiles,并use default native compilers。这时可能会弹出上图红框的错误,原因在于第3步中没有正确安装MinGW64。
解决方法如下,运行MinGW64,在终端下执行代码安装MinGW64及其依赖:
pacman -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-make mingw-w64-x86_64-pkgconf base base-devel msys2-w32api-runtime

同时将MinGW64的安装路径添加到系统变量path中(默认C:\msys64\mingw64\bin);
在CMake中找到OPENCV_EXTRA_MODULES_PATH,填入src中解压的contrib4.5.5 modules的路径,博主这里是C:\ljf_file\Opencv4.5.5\src\opencv_contrib-4.5.5\opencv_contrib-4.5.5\modules;同时勾选OPENCV_ENABLE_NONFREE选项;


③确认没有报错后,执行Cmake中的generate操作:

①generate成功后,使用终端进入build文件夹:
cd C:\ljf_file\Opencv4.5.5\build
②依次执行以下两条指令:
- mingw32-make
-
- mingw32-make install


以上为mingw32-make的执行截图,以下为mingw32-make install的执行截图:


①设置用户变量:

②在用户变量的path新增以下安装路径:

③设置系统变量path:

①测试代码main.cpp:
- # include
- # include"opencv2/opencv.hpp"
-
- using namespace cv;
-
- int main(){
- printf("Hello, Opencv4!\n");
- Mat image = imread("./sysu_test1.jpg"); // 读取图片
-
- namedWindow("img1"); // 创建窗口
- imshow("img1", image); // 显示读取的图片
- waitKey(0);
- return 0;
- }
②编写CMakeLists:
- cmake_minimum_required(VERSION 3.24) # 指定 cmake的 最小版本
- project(test) # 设置项目名称
-
- find_package(Opencv REQUIRED)
- INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
- add_executable(main main.cpp) # 生成可执行文件
- target_link_libraries(main ${OpenCV_LIBS} ) # 设置target需要链接的库
③文件总览

④执行以下指令,生成可执行文件main.exe:
- mkdir build
-
- cd build
-
- cmake ..
-
- cd ..
-
- mingw32-make
⑤执行可执行文件main.exe,结果展示:
./main.exe


① 在第7步中执行Cmake ..会出现以下红框警告,即:CMake Warning at C:/ljf_file/Opencv4.5.5/build/install/OpenCVConfig.cmake:190 (message): Found OpenCV Windows Pack but it has no binaries compatible with your configuration. You should manually point CMake variable OpenCV_DIR to your build of OpenCV library.
同时在执行mingw32-make时,会出现opencv2/opencv.hpp not found的error!

尝试过的解决方法:在CMakelists中增加OpenCV_DIR的路径,即 set(OpenCV_DIR "C:/ljf_file/Opencv4.5.5/build/install/"),但无法解决;
原因分析:注意看上图的绿框,CMake默认使用的是Visual Studio 14 2015携带的C和C++编辑器,而本文中编译安装的OpenCV是基于MinGW的,两者存在冲突。因为之前博主在自己电脑中安装过VS Tools 2019,所以存在两个编译器,所以只需把CMake使用的编辑器更改为MinGW。
解决方法:执行Cmake ..前执行以下代码:
cmake -G "MinGW Makefiles" -DCMAKE_CXX_FLAGES=-std=c++11


至此,所有问题得以解决,可以顺利执行Cmake ..和mingw32-make!
如果更改为前面的Visual Studio 14 2015编译器,也可执行以下代码即可,CMake支持的编译器可见链接中的CMake支持的编译器列表,也可执行Cmake -G -h查看支持的generators.
cmake -G "Visual Studio 14 2015 [Win64]"