快速上手

安装dev c++或者小熊猫c++

这里推荐使用小熊猫c++,他就是dev c++的pro max版本,在保持样式基本相同的同时,有很多代码高亮,提示等功能。下载链接

在windows下为mingw配置opencv-2024-12-14-11-57-04
这是官网链接:http://royqh.net/redpandacpp/
安装过程一路默认,只需要修改你所安装的位置即可。

下载已经编译好的opencv

github realese链接
注意,下载时需要和你电脑本地的mingw版本号为位数相对应才可以正常使用。

下载后,将其解压在某个具体的路径,如下:
在windows下为mingw配置opencv-2024-12-14-11-38-29

配置编译器

点击工具->选项->编译器
在windows下为mingw配置opencv-2024-12-14-11-47-28
在windows下为mingw配置opencv-2024-12-14-11-47-03

接下来,分别添加bin文件,lib文件目录和include目录
在windows下为mingw配置opencv-2024-12-14-11-48-43
在windows下为mingw配置opencv-2024-12-14-11-48-58
在windows下为mingw配置opencv-2024-12-14-11-49-14

注意,选择的目录为你所解压的opencv文件所在的目录。

最后,在链接时添加如下选项,即完成opencv的配置。

1
-lopencv_core455 -lopencv_imgproc455 -lopencv_highgui455 -lopencv_imgcodecs455 -lopencv_videoio455 -lopencv_calib3d455 -lopencv_features2d455 -lopencv_objdetect455 -lopencv_flann455 -lopencv_ml455 -lopencv_photo455 -lopencv_stitching455 -lopencv_video455 -lopencv_dnn455 -lopencv_gapi455

在windows下为mingw配置opencv-2024-12-14-11-50-26

到这为止。你就可以快乐的使用OpenCV去完成开发内容了(下面的内容可以忽略)

VSCode+CMake下的配置

前置内容

可以看到,在上面的配置中,我们只能使用dev c++小熊猫c++,而且链接时需要写一大串内容。如果在更换工作环境时or帮助别人配置环境时,总是要有这么一大串要静态链接的内容。就感到颇为麻烦。

所以思考能不能优化链接的方式,通过通配符直接完成所有静态库的引用和链接。于是选择了使用CMake+VSCode的方式来完成配置(你用CLion也是可以的)

关于静态库和动态库的区分:

然后,不难发现;在opencv的bin目录下都是已经经过编译的动态库文件(以.dll结尾)
在windows下为mingw配置opencv-2024-12-14-12-20-19

而在lib文件中,则是与这些动态库文件相对应的静态库文件(以.dll.a结尾):
在windows下为mingw配置opencv-2024-12-14-12-21-27

关于为什么会是这样子的一个形式,可以查看MingW编译时为动态库时的选项,这里仅提供一个参考的链接MingW下动态链接库常识

大抵就是说这些静态库文件并不具备具体的函数实现。他的作用只是对动态库的一个声明,方便程序在运行时自动寻找到动态库。(个人看法,不一定正确)(这样子的情况在MSVC编译器下也存在,只是表达方式不一样而已)

所以我们可以明确我们要配置opencv就是要:
在编译的时候,添加上include头文件和静态库文件。在运行时让他可以找到动态库文件

编译部分

文件目录如下:
在windows下为mingw配置opencv-2024-12-14-12-31-36
此时我们使用CMake(默认你们已经下载好VSCode和CMake插件等)
CMakeLists.txt的内容如下:

1
2
3
4
5
6
7
8
9
10
cmake_minimum_required(VERSION 3.10)
project(CV)
add_executable(Test main.cpp)

# 将OpenCV的静态库以别名的形式存储
file(GLOB OPENCV_LIBS "D:/Program Files/OpenCV/OpenCV-MinGW-Build-OpenCV-4.5.5-x64/x64/mingw/lib/libopencv_*.dll.a")

include_directories("D:/Program Files/OpenCV/OpenCV-MinGW-Build-OpenCV-4.5.5-x64/include")

target_link_libraries(Test ${OPENCV_LIBS})
  • cmake_minimum_required 此命令指定了构建项目所需的最低CMake版本
  • project 该命令定义了项目的名称,这里项目命名为CV
  • add_executable(Test main.cpp) 此命令将创建一个名为Test的可执行文件,并将main.cpp作为源文件进行编译。
  • file(GLOB YOU_FILE_LIST_NAME DIRECTION) file()命令用于创建一个包含所有符合指定路径模式的文件的列表。可以使用通配符
  • include_directories() 此命令指定了包含目录,即Include的目录
  • target_link_libraries(Test ${OPENCV_LIBS}) 此命令将前面获取到的OpenCV静态库链接到目标Test。OPENCV_LIBS变量包含了所有需要链接的库文件,CMake会将它们与Test目标进行链接

当你ctrl+s保存后,CMake会自动帮你配置。你只需要点击屏幕下的build按钮
在windows下为mingw配置opencv-2024-12-14-12-44-01

然后你就可以看到build目录下有一个Text.exe文件,即完成了编译工作了。
在windows下为mingw配置opencv-2024-12-14-12-46-15

运行

此时,我们点击该文件运行,却发现仍然有错误:显示缺少动态运行库

在windows下为mingw配置opencv-2024-12-14-12-47-00

对,这很合理,因为你只为它链接了动态库的imp-lib,他会去寻找动态库在哪。但是因为你没有为他配置动态库,所以他找不到。于是再次报错。

这里提供几个解决方法:

  1. bin目录下所有的dll文件复制到EXE文件目录,或者把EXE文件放到OpenCVbin目录下,就可以直接运行。(这个方法有点笨,但最简单有效,而且不会污染开发环境)

  2. OpenCV的bin目录放到PATH下。如图:
    在windows下为mingw配置opencv-2024-12-14-12-52-10
    这种方法也简单,但是考虑到我并不会长期使用OpenCV,可能只是应付上课or什么的。所以我也不想污染我的环境。所以还有最后一个方法

  3. 使用VSCode的launch调试工具
    在windows下为mingw配置opencv-2024-12-14-12-54-08

    他需要你创建一个launch.json用于启动你运行的程序
    具体内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    {

    "version": "0.2.0",
    "configurations": [
    {
    "name": "Debug with MinGW GDB",
    "type": "cppdbg",
    "request": "launch",
    "program": "${workspaceFolder}/build/Test.exe",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [
    {
    "name": "PATH",
    "value": "D:/Program Files/OpenCV/OpenCV-MinGW-Build-OpenCV-4.5.5-x64/x64/mingw/bin;${env:PATH}"
    }
    ],
    "externalConsole": true,
    "MIMode": "gdb",
    "miDebuggerPath": "C:/Program Files/RedPanda-Cpp/MinGW64/bin/gdb.exe",

    }
    ]
    }

    在上述代码中:

    • program 这个字段指定了要调试的可执行文件路径
    • cwd 这是程序的当前工作目录,即你的程序跑起来是的根目录,如果你有通过相对路径读取文件的话,比如我读取的lena.jpg他就应该在这个目录下,他通常就是你的cpp所在的目录。
    • environment 该字段定义了调试会话的环境变量,这里就是最重点的部分,你在这里添加上OpenCV的bin目录的路径,然后就他就可以在调试中启动。既不污染电脑的环境,也达到了跑程序的目的
    • externalConsole 这个字段设置为 true,表示调试时会启动一个外部终端窗口。方便截图提交作业( •̀ ω •́ )y
    • miDebuggerPath 该字段指定了 GDB 调试器的路径,就是你的MinGW的bin目录下的gdb程序

    上述是我认为稍微重点的部分,其他更多的参数配置请查询官网。

至此。再点击launch运行该程序,同时你还可以给你的程序打断点进行调试。
在windows下为mingw配置opencv-2024-12-14-13-02-20

于是,所有的配置部分都圆满结束。