一、安装 OpenCV 4.5.4
安装方法有两种:
下载源代码编译
Homebrew
具体安装步骤请见:
https://blog.csdn.net/qq_42067550/article/details/122044894?spm=1001.2014.3001.5502
二、配置 OpenCV
通常来说安装不会出什么问题,大多数遇到问题的都会在配置这里。
随便写个实验代码,发现在引入头文件的时候就会出错:
#include "opencv2/core.hpp"
报错提示:
no such file
找不到头文件,说明配置出了问题。
不像在 visual studio 或者 xcode 里面,有专门的设置窗口让你添加 include 的路径,在 vscode 中,需要根据项目建立单独的配置文件。
包含了以下3个最重要的:
c_cpp_properties.json
launch.json
tasks.json
这三个文件需要存放在项目文件夹下面的 .vscode
文件夹内。
虽然下面我会把这个三个文件的代码附上,但是对于配置遇到报错的小伙伴,务必理清楚这三个文件的逻辑关系
,会对于定位错误非常有帮助!
以下附上的是我自己通过漫长的 debug 过程,总结出来的个人理解,不一定精确,但是应该可以给遇到困难的朋友一些灵感和启发。
c_cpp_properties.json
这个文件的作用是配置 vscode 配置整体的 C++ 的环境,就是你要告诉你的 vscode IDE,我有哪些需要进行 include 的
头文件 .hpp
和库文件 .lib
,我把这个理解为一个准备工作。
这里主要注意两点:
- “includePath” 后面就是放的就是头文件和库文件所在的路径,每个人的情况不同,可以把下面的路径输入进去查找一下有没有对应的文件,以进行确认。
- 后面的两个星号
**
表示递归查找,就是查找目标目录的同时,该目录下的子目录也一并查找。
文件内容:
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/usr/local/Cellar/opencv/4.5.4/lib/**",
"/usr/local/Cellar/opencv/4.5.4/include/opencv4/"
],
"defines": [],
"macFrameworkPath": [],
"compilerPath": "/usr/local/bin/gcc-11",
"cStandard": "gnu17",
"cppStandard": "gnu++17",
"intelliSenseMode": "macos-gcc-x64"
}
],
"version": 4
}
launch.json
这个是 vscode 用于调试的配置文件,比如指定调试语言环境,指定调试类型等。
这里最重要的是 "preLaunchTask"
的设置,表示在运行这个调试之前,需要告诉编译器哪些前置条件。其实也就是把 tasks.json
关联进来。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++-11 - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: g++-11 生成活动文件"
}
]
}
tasks.json
这个文件是编译的配置,设置你在编译的过程中需要用到哪些库文件和头文件,用什么编译器,用什么编译方式等,都可以在这里进行设置。
这里的关键在于 "label"
的设置一定要和 launch.json 中的 "preLaunchTask"
一致!
pkg-config
部分设置可以参考:
https://blog.csdn.net/qq_42067550/article/details/122044894?spm=1001.2014.3001.5502
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++-11 生成活动文件",
"command": "/usr/bin/clang++",
"args": [
"-std=c++17",//使用C++17
"-stdlib=libc++",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"`pkg-config",
"--libs",
"--cflags",
"opencv4`"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "C/C++: g++-11 生成活动文件"
}
]
}
三、测试代码
配置完成后,在项目目录下放一张图片,然后可以使用以下代码进行测试:
#include <iostream>
#include <vector>
#include <string>
#include "opencv2/opencv.hpp"
#include "opencv2/highgui.hpp"
using namespace std;
using namespace cv;
int main (){
Mat img = imread("./dog.jpeg");
if(!img.data) {
cout<<"couldn't load the image";
return -1;
}
else{
cout<<"loaded the image";
imshow("img",img);
}
while(true)
{
int c = waitKey(20);
if(27==(char) c)
break;
}
return 0;
}
显示图片成功:
按下 esc 键退出。
四、可能遇到的问题
可能遇到 no such file 的报错,参考:
https://blog.csdn.net/qq_42067550/article/details/122636151