Ubuntu环境下VScode配置OpenCV的C++开发环境

本文详细介绍在Ubuntu环境下,如何使用VSCode配置OpenCV的C++开发环境,包括安装必要插件、配置C++编译环境、设置OpenCV路径及库文件,最后实现运行示例代码。

 任务描述:ubuntu下在vs code内配置opencv的c++环境, 并运行示例代码。

 

step 0. 写在前面的话

我的环境是Ubuntu18,OpenCV3.4.1+contrib3.4.1,VScode都是已经安装好的。

其中opencv的配置请参考ubuntu下opencv的配置。VScode是直接在商城中搜索下载即可。

 

step 1. vs code插件安装

如下图,给vs code安装C/C++插件。

step 2. 新建一个文件夹,在vs code内新建文件,编写如下调试代码。

我们的配置过程分为两个阶段:C++编译环境和opencv开发环境。

step 3. C++编译环境的配置

Debug -> Open Configurations -> 打开备选框 -> C++(GDB/LLDB) -> g++ build and debug active file

上述操作打开launch.json文件,修改其中的设置项。修改后如下:

    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "g++ build active file",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]

其中需要重点注意的几个地方在于:

(1)"externalConsole": true  关键字修改为true,指的是弹出命令窗口。

(2)"preLaunchTask": "g++ build active file"  后面的配置需要用到这个关键字。

然后回到测试代码的文件,注销掉与opencv相关的代码(因为)我们目前仅针对C++编译环境进行配置,点击F5运行,出现如下提示:

选择Configure Task,在备选框中选择C/C++:cpp build active file选项,则新建一个task.json文件。

修改文件配置如下:

//> 编译单个文件

    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "g++ build active file",
            "command": "g++",
            "args": [
                "-g","-std=c++11", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}",
            ],
            "options": {
                "cwd": "/usr/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }
    ]


//> 编译多个文件

    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "g++ build active file",
            "command": "g++",
            "args": [
                "-g","-std=c++11", "${fileDirname}/*.cpp", "-o", "${fileDirname}/${fileBasenameNoExtension}",
            ],
            "options": {
                "cwd": "/usr/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }
    ]

其中,需要注意的几点是:

(1)"label": "g++ build active file"  关键字必须与前述launch.json文件的"preLaunchTask": "g++ build active file"关键字一致。

(2)"command": "g++" 关键字要修改为g++,否则可能会报不能debug的提示。

(3)"args": [ "-g", "-std=c++11", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ] 关键字就是g++的编译指令。

此时,就可以运行CPP代码了,回到测试文件,点击F5,会在控制台输出Hello world的字符,如图。

step 4. 配置Opencv的开发环境

这一步的主要思路,与在windows环境下为VS配置Opencv开发环境是一致的,即:将include的头文件所在路径和函数库的路径 

设置给编译器。

Ctrl + Shift + P 打开搜索框,键入c++,会出现备选项目,选择图示Edit configurations (JSON),

进入c_cpp_properties.json文件内进行配置修改。修改如下:

"configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4

主要注意的地方在于:

"includePath" 选项内添加关键字路径 "/usr/local/include",这里面存放的是opencv和opencv2两个文件,如图:

另外在task.json文件内添加如下修改:

"args": [
                "-g", "-std=c++11", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}",
                "-I", "/usr/local/include",
                "-I", "/usr/local/include/opencv",
                "-I", "/usr/local/include/opencv2",
                "-L", "/usr/local/lib",
                "-l", "opencv_aruco",
                "-l", "opencv_bgsegm",
                "-l", "opencv_bioinspired",
                "-l", "opencv_calib3d",
                "-l", "opencv_ccalib",
                "-l", "opencv_core",
                "-l", "opencv_datasets",
                "-l", "opencv_dnn_objdetect",
                "-l", "opencv_dnn",
                "-l", "opencv_dpm",
                "-l", "opencv_face",
                "-l", "opencv_features2d",
                "-l", "opencv_flann",
                "-l", "opencv_freetype",
                "-l", "opencv_fuzzy",
                "-l", "opencv_hfs",
                "-l", "opencv_highgui",                
                "-l", "opencv_imgcodecs",
                "-l", "opencv_img_hash",
                "-l", "opencv_imgproc",
                "-l", "opencv_line_descriptor",
                "-l", "opencv_ml",
                "-l", "opencv_objdetect",
                "-l", "opencv_optflow",
                "-l", "opencv_phase_unwrapping",
                "-l", "opencv_photo",
                "-l", "opencv_plot",
                "-l", "opencv_reg",
                "-l", "opencv_rgbd",
                "-l", "opencv_saliency",
                "-l", "opencv_shape",
                "-l", "opencv_stereo",
                "-l", "opencv_stitching",
                "-l", "opencv_structured_light",
                "-l", "opencv_superres",
                "-l", "opencv_surface_matching",
                "-l", "opencv_text",
                "-l", "opencv_tracking",
                "-l", "opencv_videoio",
                "-l", "opencv_video",
                "-l", "opencv_videostab",
                "-l", "opencv_xfeatures2d",
                "-l", "opencv_ximgproc",
                "-l", "opencv_xobjdetect",
                "-l", "opencv_xphoto",
            ],

其中:“-I”指令后面的头文件坐在路径,“-L”后面是库文件所在路径,“-l” 后面是库的名字。

注意:此处有个坑就是,库的名字一定要按照上述文档中的方式写,即“opencv_XXX”,而不能按照传统上linux的库名“libopencv_XXX”,否则编译会报错说找不到函数库。

step 5. 回到测试文件,F5运行如下

但是似乎这种方法每次新开一个工程都需要再配置一遍,后面再研究一下一劳永逸的方法吧!

本文内容参考了参考1参考2参考3,感谢这些博主们的分享!

### 配置 Linux 下 VSCode 支持 OpenCV C++ 开发 #### 安装必要依赖项 为了使 VSCode 能够支持 OpenCVC++ 开发,首先需要确保系统已经安装了必要的软件包。这通常包括编译工具链以及 OpenCV 库本身。 对于基于 Debian 或 Ubuntu 的发行版,可以通过以下命令来安装这些必需的组件: ```bash sudo apt update && sudo apt install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr \ libatlas-base-dev qtbase5-dev libcanberra-gtk* -y ``` 接着下载并构建 OpenCV 及其贡献模块(如果需要的话)。可以利用 `git` 获取源码,并通过 `cmake` 来管理项目的构建过程[^1]。 #### 设置 VSCode 编辑器 一旦完成了上述准备工作,则可以在 VSCode 中创建一个新的工作区,并按照如下方式配置编辑器以便更好地处理 C++OpenCV 项目。 ##### 创建 `.vscode` 文件夹及其子文件 在项目根目录下新建名为`.vscode`的隐藏文件夹,该文件夹内应包含至少三个 JSON 格式的配置文件:`tasks.json`, `launch.json` 和 `c_cpp_properties.json`. ###### tasks.json 此文件定义了一组任务供终端执行,比如编译程序等。下面是一个简单的例子,它指定了如何调用 `g++` 进行编译操作: ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "/usr/bin/cmake", "args": [ "-S.", "-B./out/build/x64-debug", "-DCMAKE_BUILD_TYPE=Debug" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task." } ] } ``` 请注意这里的参数可能依据个人需求有所不同;特别是当使用特定版本的编译器或其他选项时应该相应调整[^4]. ###### launch.json 这个文件用来指定启动配置,即告诉调试器怎样运行和停止应用程序。这里给出一个适用于 GDB 的基本模板: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/your_executable_file_name", // 替换成实际可执行文件名 "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build", "miDebuggerPath": "/usr/bin/gdb", "logging": {"trace":true,"traceResponse":true}, "internalConsoleOptions": "openOnSessionStart" } ] } ``` 同样地,“${workspaceFolder}”代表当前的工作空间路径,而“your_executable_file_name”则需替换为具体的输出文件名称. ###### c_cpp_properties.json 最后一个是 IntelliSense 所使用的属性表单,用于提供代码补全和其他智能感知功能。以下是针对本案例的一个实例化片段: ```json { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/local/include/opencv4", "/usr/include/opencv4" ], "defines": [], "compilerPath": "/usr/bin/gcc", "intelliSenseMode": "linux-gcc-x64", "browse": { "path": [ "${workspaceFolder}" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } } ], "version": 4 } ``` 在此处添加所有相关的头文件位置到 `"includePath"` 数组里,这样可以让 IDE 正确解析外部库函数声明.
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值