目录
1--从github下载OpenCV和相应的contrib包
2--下载Cmake
3--安装MinGW
4--Cmake编译OpenCV
5--终端编译OpenCV
6--编译成功后设置用户变量和系统变量:
7--基于VSCode和CMake测试
8--问题记录
9--参考
这里博主使用的OpenCV版本为4.5.5:
OpecCV4.5.5下载地址
opencv_contrib4.5.5下载地址
这里博主下载的是Windows X64 installer(版本为3.25.0):
CMake下载地址
博主建议通过安装MSYS2来安装MinGW:
根据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]"
Windows编译安装OpenCV(大部分操作基于此,细节可参考此链接)
第二个问题的解决方案