紅葉~
L
O
A
D
I
N
G
紅葉
opencv4-C++版本下载(附vscode环境配置)

opencv4-C++版本下载(附vscode环境配置)

👁️ 本文内容
在 Ubuntu 上从源码编译安装 OpenCV 4(含 opencv_contrib),再配置 VS Code 的 C++ 开发环境,最后用一个小程序验证能否正常显示图片。

📦 1. 安装依赖

使用 g++ 和 cmake 编译 OpenCV 4。先安装 g++、cmake、make、wget、unzip(已安装可跳过):

1
sudo apt install -y g++ unzip cmake

安装 OpenCV 依赖的基本库:

1
2
3
4
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get update
sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev
⚠️ 报错:E: 无法定位软件包 libjasper-dev
这是缺少软件源导致的,继续在终端输入下面的命令。
1
2
3
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

安装完上面的依赖后,再执行:

1
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev

📥 2. 下载 OpenCV 源文件

直接在 OpenCV 官网 下载源文件(无需翻墙),点击 Sources 下载:

顺便下载 opencv_contrib:https://github.com/opencv/opencv_contrib/tags,选择 Download ZIP:

在主目录创建一个叫 opencv 的文件夹,把刚刚下载的两个压缩包移进去,然后在这个文件夹里打开终端,解压:

1
2
unzip opencv-4.6.0.zip
unzip opencv_contrib-4.6.0.zip

然后进入 OpenCV 源码目录:

1
cd opencv-4.6.0

🔨 3. CMake 编译安装

创建 build 文件夹并进入:

1
mkdir build && cd build

开始 cmake(注意把 OPENCV_EXTRA_MODULES_PATH 改成你自己的 opencv_contrib 路径):

1
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_TBB=ON -D WITH_OPENMP=ON -D OPENCV_EXTRA_MODULES_PATH=你的opencv_contrib的路径/modules -D INSTALL_CXX_EXAMPLES=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_1394=OFF ..

💡 指令很长,懒得看的直接粘过去就行。其中 -D INSTALL_CXX_EXAMPLES=ON 是安装 C++ 示例,想要 C 或 Python 的,复制一份把 CXX 换掉即可。

接着编译:

1
make -j8

💡 -j8 表示同时使用 8 个进程,按自己 CPU 的线程数调整,数字越大编译越快。个人推荐 -j8(我用的 -j32)。

安装:

1
sudo make install

⚙️ 4. 配置环境

① 配置动态库路径

1
sudo gedit /etc/ld.so.conf.d/opencv.conf

在里面添加:

1
/usr/local/lib

执行命令使之生效:

1
sudo ldconfig

② 配置 bash

1
sudo gedit /etc/bash.bashrc

在末尾添加:

1
2
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

保存后更新:

1
2
source /etc/bash.bashrc
sudo updatedb

💻 5. 配置 VS Code

下载 VS Code

👉 VS Code 下载地址

选择 .deb x64:

如果下载太慢,可以把下图框住的域名换成 vscode.cdn.azure.cn:

下载完后,在安装包所在目录打开终端安装(文件名按你下载的版本修改):

1
sudo dpkg -i code_1.77.3-1681292746_amd64.deb

打开 VS Code,安装 C++ 扩展:

回到资源管理器,按 Ctrl + Shift + P,选择第一个:

根据下图进行配置:

写一个测试程序

随便创建一个 text.cpp,在同一目录下放一张图片,命名为 0.png(名字随意,和代码一致就行):

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main()
{
Mat img = imread("0.png", 1);
imshow("1", img);
waitKey(0);
return 0;
}

按 F5 运行一下,会生成一个 .vscode 文件夹。最终里面要有这三个文件(没有的自己新建):

c_cpp_properties.json、launch.json、tasks.json

c_cpp_properties.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/opencv4",
"/usr/local/include/opencv4"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c17",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64",
"configurationProvider": "ms-vscode.makefile-tools"
}
],
"version": 4
}

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
26
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}", // 程序文件路径
"args": [], // 程序运行需传入的参数
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false, // 运行时是否显示控制台窗口
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ build active file", /* 与 tasks.json 里的 label 保持一致 */
"miDebuggerPath": "/usr/bin/gdb"
}
]
}

tasks.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file", /* 与 launch.json 里的 preLaunchTask 保持一致 */
"command": "/usr/bin/g++",
"args": [
"-std=c++11",
"-g",
"${file}", /* 编译单个文件 */
//"${fileDirname}/*.cpp", /* 编译多个文件 */
"-o",
"${fileDirname}/${fileBasenameNoExtension}", /* 输出文件路径 */

/* 项目所需的头文件路径 */
"-I","${workspaceFolder}/",
"-I","/usr/local/include/",
"-I","/usr/local/include/opencv4/",
"-I","/usr/local/include/opencv4/opencv2",

/* 项目所需的库文件路径 */
"-L", "/usr/local/lib",

/* OpenCV 的 lib 库 */
"/usr/local/lib/libopencv_*"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}

✅ 6. 运行验证

回到 text.cpp,运行代码:

图像成功显示,配置完成 🎉

本文作者:紅葉
本文链接:https://swe-et.github.io/opencv/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可