• 笔记--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文件夹用于存放编译后的文件:

    ②对于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操作:

    5--终端编译OpenCV

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

    cd C:\ljf_file\Opencv4.5.5\build

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

    1. mingw32-make
    2. mingw32-make install

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

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

    ①设置用户变量:

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

    ③设置系统变量path:

    7--基于VSCode和CMake测试

    ①测试代码main.cpp:

    1. # include
    2. # include"opencv2/opencv.hpp"
    3. using namespace cv;
    4. int main(){
    5. printf("Hello, Opencv4!\n");
    6. Mat image = imread("./sysu_test1.jpg"); // 读取图片
    7. namedWindow("img1"); // 创建窗口
    8. imshow("img1", image); // 显示读取的图片
    9. waitKey(0);
    10. return 0;
    11. }

    ②编写CMakeLists:

    1. cmake_minimum_required(VERSION 3.24) # 指定 cmake的 最小版本
    2. project(test) # 设置项目名称
    3. find_package(Opencv REQUIRED)
    4. INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
    5. add_executable(main main.cpp) # 生成可执行文件
    6. target_link_libraries(main ${OpenCV_LIBS} ) # 设置target需要链接的库

    ③文件总览

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

    1. mkdir build
    2. cd build
    3. cmake ..
    4. cd ..
    5. 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!

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

    9--参考

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

    第二个问题的解决方案

  • 相关阅读:
    隐写术----LSB隐写
    计算机毕业设计(附源码)python幼儿健康管理系统
    Apache ShardingSphere 5.1.0 正式发布
    力扣leetcode 最简单的中等题 2161. 根据给定数字划分数组
    Vue3 v-model非兼容更改
    【黄啊码】MySQL入门—13、悲观锁、乐观锁怎么用?什么是行锁、页锁和表锁?死锁了咋办?
    MySQL 字符集与乱码与collation设置的问题?
    JavaScipt基础(持续更新三)
    JavaScript算法33- 兼具大小写的最好英文字母(leetCode:2309简单)
    盒子阴影和文本阴影
  • 原文地址:https://blog.csdn.net/weixin_43863869/article/details/127643218