笔记--Windows下从源码编译安装OpenCV

目录

1--从github下载OpenCV和相应的contrib包

2--下载Cmake

3--安装MinGW

4--Cmake编译OpenCV

5--终端编译OpenCV

6--编译成功后设置用户变量和系统变量:

7--基于VSCode和CMake测试

8--问题记录

9--参考


1--从github下载OpenCV和相应的contrib包

这里博主使用的OpenCV版本为4.5.5:

OpecCV4.5.5下载地址
opencv_contrib4.5.5下载地址

2--下载Cmake

这里博主下载的是Windows X64 installer(版本为3.25.0):

CMake下载地址

3--安装MinGW

博主建议通过安装MSYS2来安装MinGW:

根据MSYS2官方教程来安装MinGW

4--Cmake编译OpenCV

将压缩包解压至新建的src文件夹,并新建一个build文件夹用于存放编译后的文件:

笔记--Windows下从源码编译安装OpenCV_第1张图片

②对于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文件夹路径;

笔记--Windows下从源码编译安装OpenCV_第2张图片

在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

笔记--Windows下从源码编译安装OpenCV_第3张图片

 同时将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选项;

笔记--Windows下从源码编译安装OpenCV_第4张图片

笔记--Windows下从源码编译安装OpenCV_第5张图片

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

笔记--Windows下从源码编译安装OpenCV_第6张图片

5--终端编译OpenCV

①generate成功后,使用终端进入build文件夹:

cd C:\ljf_file\Opencv4.5.5\build

②依次执行以下两条指令:

mingw32-make

mingw32-make install

笔记--Windows下从源码编译安装OpenCV_第7张图片

笔记--Windows下从源码编译安装OpenCV_第8张图片

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

笔记--Windows下从源码编译安装OpenCV_第9张图片

笔记--Windows下从源码编译安装OpenCV_第10张图片

6--编译成功后设置用户变量和系统变量:

①设置用户变量:

笔记--Windows下从源码编译安装OpenCV_第11张图片

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

笔记--Windows下从源码编译安装OpenCV_第12张图片

③设置系统变量path:

笔记--Windows下从源码编译安装OpenCV_第13张图片

7--基于VSCode和CMake测试

①测试代码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需要链接的库

③文件总览

笔记--Windows下从源码编译安装OpenCV_第14张图片

④执行以下指令,生成可执行文件main.exe:

mkdir build

cd build

cmake ..

cd ..

mingw32-make

⑤执行可执行文件main.exe,结果展示:

./main.exe

8--问题记录

① 在第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!

笔记--Windows下从源码编译安装OpenCV_第15张图片

尝试过的解决方法:在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

笔记--Windows下从源码编译安装OpenCV_第16张图片

笔记--Windows下从源码编译安装OpenCV_第17张图片

至此,所有问题得以解决,可以顺利执行Cmake ..和mingw32-make!

如果更改为前面的Visual Studio 14 2015编译器,也可执行以下代码即可,CMake支持的编译器可见链接中的CMake支持的编译器列表,也可执行Cmake -G -h查看支持的generators.

cmake -G "Visual Studio 14 2015 [Win64]"

9--参考

Windows编译安装OpenCV(大部分操作基于此,细节可参考此链接)

第二个问题的解决方案

你可能感兴趣的:(Opencv(C++)学习笔记,opencv,人工智能,计算机视觉)