ubuntu下基于vscode进行opencv调试-记录
概述
本文为在已有ubuntu、vscode以及openCV基础上的踩坑文,从零开始走通可能更简单。
近期由于工程需要,在ubuntu环境下要进行openCV调试,IDE使用的是VScode,由于使用的电脑非自身机器,很多环境在原机器上已有,但不知道具体安装位置,踩了一些坑,在博客中着重描述,供参考。
版本说明
ubuntu: 18.04 (查看指令,终端输入cat /etc/issue)
VScode:V1.45 (Help->release notes)
openCV:3.2.0 (查看指令,终端输入pkg-config --modversion opencv )
路线1:使用cmake完成文件编译,vscode仅供参考代码(无法调试)
opencv可通过cmake直接在终端中完成编译,生成可执行文件并运行。需要注意的是运行时的路径问题,代码中的相对路径可能会出错。优点是走通此路快,但是无法对代码进行调试。
路线2:使用vscode,添加opencv库,gdb完成调试
主要参考文章:Ubuntu 18.04系统下的环境配置vscode&&opencv&&c++
对于vscode,打开文件夹即建立工程,添加main.cpp文件:
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat srcImage=imread("test.jpg");
imshow("Origin",srcImage);
waitKey(0);
return 0;
}
按F5运行,提示配置launch.json(vscode调试、运行程序需要的配置项),踩坑后,本机最终配置coding 如下:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "main",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.o",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"preLaunchTask": "g++",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
]
}
进一步,需要配置tasks.json:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "g++",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-std=c++11",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.o",
"-I", "/home/damon/work/ceva-adas/3rdparty/opencv3.2/include",
"-I", "/home/damon/work/ceva-adas/3rdparty/opencv3.2/include/opencv",
"-I", "/home/damon/work/ceva-adas/3rdparty/opencv3.2/include/opencv2",
"-L", "/home/damon/work/ceva-adas/3rdparty/opencv3.2/lib",
"-l", "opencv_core",
"-l", "opencv_imgproc",
"-l", "opencv_imgcodecs",
"-l", "opencv_video",
"-l", "opencv_ml",
"-l", "opencv_highgui",
"-l", "opencv_objdetect",
"-l", "opencv_flann",
"-l", "opencv_imgcodecs",
"-l", "opencv_photo",
"-l", "opencv_videoio"
],
"options": {
"cwd": "/usr/bin"
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
注意:其中"-I", "/home/damon/work/ceva-adas/3rdparty/opencv3.2/include"为ubuntu下opencv的安装路径,此处根据使用机器的不同需要修改,由于本机openCV不是我自己安装的,寻找路径花了很久时间,方法为find寻找opencv关键词文件路径,并找到ubuntu安装对应版本下的opencv3.2文件夹,该步骤耗时可能不如重装,但是机器上很多程序环境已配好,重装可能导致不能运行,无奈之举。
最终配置c_cpp_properties.json:(生成时选择others,补充代码如下)
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++14",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
其中"/usr/local/include"路径自己验证下即可。
随后,选择main.cpp,设置断点,按F5即可进行调试。