文章目录
- 前言
- 直接使用OpenCV 编译好的库
- 自己编译OpenCV
- VS Code 安装
- MinGW下载
- 下载Cmake
- 编译OpenCV
- VS Code 运行cv程序
- VSCode配置
- 运行CV程序
- 参考文章
前言
在网上找了些资料,大致得出VS Code
开发OpenCV的环境配置流程,如下
- 安装VS Code
- 安装MinGW
- 安装CMake
- 下载OpenCV
- 配置OpenCV
- 配置VS Code
曾经在公司用过OpenCV
,貌似并没有编译这一步,不明所以
以下是GPT的回答:
使用 CMake 来编译和配置 OpenCV 有几个重要原因:
- 跨平台支持:CMake 是一个跨平台的构建系统,可以生成适用于不同操作系统(如 Windows、Linux 和 macOS)的项目文件。这使得 OpenCV 可以在各种平台上编译和使用¹⁴。
- 自动化配置:CMake 可以自动检测系统上的编译器和库,并生成相应的构建文件。这减少了手动配置的复杂性和错误的可能性²³。
- 模块化构建:通过 CMake,开发者可以选择性地编译 OpenCV 的特定模块或功能,而不需要编译整个库。这对于定制和优化项目非常有用¹⁴。
- 与其他工具的兼容性:CMake 可以生成适用于多种 IDE(如 Visual Studio、Xcode)的项目文件,使得开发者可以在自己熟悉的环境中进行开发和调试²³。
总的来说,CMake 提供了一种灵活、高效的方式来配置和编译 OpenCV,使得开发过程更加顺畅和高效。如果你不需要查看或修改 OpenCV 的源码,可以使用预编译的库文件,这样就不需要安装 CMake⁵。
这很明显是答非所问呀!
接下来看下官网的回答
To use the OpenCV library you have two options: Installation by Using the Pre-built Libraries or Installation by Making Your Own Libraries from the Source Files . While the first one is easier to complete, it only works if you are coding with the latest Microsoft Visual Studio IDE and do not take advantage of the most advanced technologies we integrate into our library1
要使用 OpenCV 库,您有两种选择: 使用预先构建的库进行安装,或者从源文件中创建自己的库进行安装。虽然第一个更容易完成,但它只有在您使用最新的 Microsoft Visual Studio IDE 编写代码并且没有利用我们集成到库中的最先进技术时才能工作
然后看下其他码农的回答
网下载好的opencv库和用Mingw64编译的不一样。官网下载opencv需要找到和VS版本相符合的库。vs是无法调用官网opencv的。用Mingw64编译好后,只需要lib文件夹和include文件夹就好。2
通过上面我们大致可以得出,使用OpenCV
库的使用方式
- 使用官网编译好的
.lib
和.dll
,对IDE有一定限制,并且只能以动态库的方式调用 - 下载源码,自己编译
那么接下来分别讲下以上两种方式
直接使用OpenCV 编译好的库
- 在OpenCV官网下载
- 下载完成后会有一个
.exe
,直接安装就好,安装后dll
在如下路径 - 直接在VS studio引入include和dll即可
自己编译OpenCV
需要的工具有VS Code、OpenCV源码、MinGW(编译g++)、Cmake(编译)
VS Code 安装
- VS Code下载
- 下载完成,直接安装即可
VS Code\bin
- 安装成功的标识是,环境变量添加了
VS Code 本质上是一个文本编辑器,是众多插件赋予了其丰富的功能
MinGW下载
- 官网下载最新即可,mingw 下载
下载后缀为seh
的包,posix
是UNIX
系统下的包 - 解压放在任意目录下即可
- 将
bin
目录添加到环境变量中 - 打开cmd,输入
g++ --version
,显示g++版本号说明安装成功
下载Cmake
下载版本version >=3.9.1即可
1中有提到,You must download cmake (version >=3.9.1) and install it. You must add cmake to PATH variable during installation
-
Cmake 下载,记得要下载二进制文件,我自己下载当时最新的版本
-
解压缩后,将其中
bin
目录路径添加到环境变量中 -
CMD输入
cmake --version
,显示版本号则处理正确
编译OpenCV
- 找到
cmake/bin/cmake-gui.exe
,打开 - 选择编译源文件和目标文件
- 执行configure,选择如下,自己生成中未截图,拷贝了几份网其他博客的图
- 选择C和C++的编译器目录
- 执行过程中消息框会出现一堆红色信息,最后显示
Configure done
,是正常的。显示Configure done后,勾选BUILD_ opencv_world
、WITH_ OPENGL
和BUILD EXAMPLES
,不勾选WITH_IPP
、WITH_MSMF
和ENABLE_PRECOMPILED_HEADERS
(如果有的话),CPU_ DISPATCH
选空( MinGW 不能编译这些内容,禁止编译即可)。再次点击Generate
- 生成如下,则表示成功
PS:如果中间有错误,可自行百度,题主未发生错误可能是挂了梯子 - CMD到MakeFiles所在文件夹,执行
minGW32-make
命令,或者使用多线程minGW32-make -j 4
命令,这个过程比较漫长,甚至会发生错误,发生错误可参考这篇文章3,或者自己读一下错误,或者百度,或者找我亦可。执行成功如下 - 执行
mingw32-make install
,编译完成后记得输入minGW32-make install完成装载,这样才会生成Install文件夹。记住install文件夹,非常重要
至此,OpenCV
编译已经完成
VS Code 运行cv程序
一共配置三个文件,这三个文件作用可以查看前面的博客
VSCode配置
launch.json
{
"name": "OpenCV Debug",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
//是否调用外部cmd
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "OpenCV 4.4.0 compile task"
}
c_cpp_properties.json
可以输入shift
+ctrl
+p
打开
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
// 需要填写头文件路径,记住此处时/install/include
"D:/OpenCV/opencv-4.4.0/x64/install/include",
"D:/OpenCV/opencv-4.4.0/x64/install/include/opencv2"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:/msys64/mingw64/bin/g++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
tasks.json
其中args
的内容需要修改
{
"label": "OpenCV 4.4.0 compile task",
"type": "shell",
"command": "g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-I",
"D:/OpenCV/opencv-4.4.0/x64/install/include",
"-I",
"D:/OpenCV/opencv-4.4.0/x64/install/include/opencv2",
"-L",
"D:/OpenCV/opencv-4.4.0/x64/bin",
"-l",
"libopencv_world440"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$gcc"
]
}
运行CV程序
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
std::string path = "C:/_20240530235524.jpg";
cv::Mat img = cv::imread(path);
cv::imshow("img", img);
cv::waitKey(0);
return 0;
}
这里需要特别注意,因我的环境配置了g++,因此直接选择右上角的调试会默认使用第一条task,那么可能并不是cv调试,这时可以使用shift
+ctrl
+b
,选择OpenCV task
即可编译,然后F5
运行
参考文章
- win10下VSCode配置opencv4.4.0(超详细教程,亲测有效)
- 一文解决VS Code安装、C++环境配置、OpenCV配置
- OpenCV使用CMake和MinGW-w64的编译安装
- VScode搭建Opencv(C++开发环境)
OpenCV Installation in Windows ↩︎ ↩︎
win10下VSCode配置opencv4.4.0(超详细教程,亲测有效)评论 ↩︎
OpenCV使用CMake和MinGW-w64的编译安装 ↩︎