1.エンジニアリングコード
1.この記事のデバッグコードフォルダーのスクリーンショットは次のとおりです。
2.コードの詳細:
ああ:
#ifndef A_H_
#define A_H_
class A
{
public:
A(){}
~A(){}
void readImg(const char* path);
};
#endif
a.cpp:
#include<opencv2/opencv.hpp>
#include <iostream>
#include "a.h"
using namespace std;
void A::readImg(const char* path)
{
cv::Mat img = cv::imread(path);
cout<<"==A img.cols=="<<img.cols<<endl;
cout<< "==A img.rows=="<<img.rows<<endl;
}
main.cpp
#include<opencv2/opencv.hpp>
#include<iostream>
#include<string>
#include"a.h"
using namespace std;
int main(){
cout<<"CV_VERSION"<<CV_VERSION<<endl;
const char* imgPath = "/home/fzh/AI/C_learn/datastruct/opencv/test.jpg";
cv::Mat img = cv::imread(imgPath);
cout<<"==main img.cols=="<<img.cols<<endl;
cout<< "==main img.rows=="<<img.rows<<endl;
int a = 1;
int b = 1;
int c;
c = a + b;
cout<<"=====hahhahhahhah===="<<endl;
cout<<"===c=:=="<<c<<endl;
A *A1 = new A();
A1->readImg(imgPath);
delete A1;
A1 = nullptr;
return 0;
}
2.デバッグを開始します
1.vsコード用のC / C ++プラグインをインストールします。
2. F5キーを押してデバッグを開始すると、.vscodeフォルダー、launch.json、tasks.jsonが自動的に生成されます。
tasks.jsonの役割はコンパイルを実行することであり、launch.jsonの役割はコンパイルされたファイルを実行することです。
2.1tasks.jsonの内容:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
//作用:执行编译
"version": "2.0.0",
"tasks": [
{
"label": "g++ build active file",//任务名称 注意要与launch.json文件的"preLaunchTask"关键字一致
"type": "shell",
"command": "g++",//终端命令 为g++
//file:当前打开正在编辑的文件名,包括绝对路径,文件名,文件后缀名
//fileDirname:当前打开的文件所在的绝对路径,不包括文件名
//fileBasenameNoExtension:当前打开的文件的文件名,不包括路径和后缀名
"args": [ //终端命令附加参数
// "-g", "-std=c++11", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}",
"-g", "-std=c++11", "${fileDirname}/*.cpp", "-o", "${fileDirname}/${fileBasenameNoExtension}", //调试运行多个.cpp文件
"-I", "/usr/include",
"-I", "/usr/include/opencv",
"-I", "/usr/include/opencv2",
"-L", "/usr/local/lib",
"-l", "opencv_core",
"-l", "opencv_imgproc",
"-l", "opencv_video",
"-l", "opencv_ml",
"-l", "opencv_highgui",
"-l", "opencv_objdetect",
"-l", "opencv_flann",
"-l", "opencv_photo"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile"
}
]
}
$ {file}:現在開いている編集用ファイルの名前(絶対パス、ファイル名、ファイル拡張子を含む)
$ {fileDirname}:現在開いているファイルの絶対パス(ファイル名を除く)
$ {fileBasenameNoExtension}:現在開いているファイルパスとサフィックスを除くファイル名
$ {workspaceFolder}:現在開いているフォルダーの絶対パス
注意:
labelはタスク名であり、launch.jsonファイルの「preLaunchTask」キーワードと一致している必要があります
コマンドはターミナルコマンドです:g ++
args:ターミナルコマンドの追加パラメーター、単一ファイルのデバッグ用 "-g"、 "-std = c ++ 11"、 "$ {file}"、 "-o"、 "$ {fileDirname} / $ {fileBasenameNoExtension}" 、「-I」はヘッダーファイルが配置されているパスです。インストールされているopencvパスに注意してください。#include <opencv2 / opencv.hpp>、「-L」はライブラリファイルが配置されているパスです。 「-l」はライブラリの名前です。
複数ファイルのデバッグ: "-g"、 "-std = c ++ 11"、 "$ {fileDirname} /*.cpp"、 "-o"、 "$ {fileDirname} / $ {fileBasenameNoExtension}"、//デバッグ複数の.cppファイルを実行します
2.2launch.jsonの内容は次のとおりです。
{
// 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": "g++ - Build and debug active file",
"type": "cppdbg",
"request": "launch",
// "program": "${workspaceFolder}/opencv/main",
//workspaceFolder:当前打开的文件夹的绝对路径
//fileDirname:当前打开的文件所在的绝对路径,不包括文件名
//fileBasenameNoExtension:当前打开的文件的文件名,不包括路径和后缀名
"program": "${fileDirname}/${fileBasenameNoExtension}",
// "program": "${workspaceFolder}/opencv/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,//用外部终端吗?为false的话就用vscode终端
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++ build active file",//预编译任务名称 注意与tasks.json中的"label"关键字要一样
"miDebuggerPath": "/usr/bin/gdb" //调试gdb路径
}
]
}
注意:
preLaunchTaskは、プリコンパイルされたタスクの名前です。tasks.jsonの「label」キーワードと同じであることに注意してください。他のタスクを移動する必要はありません。上記のコメントを参照してください。
上記の2つの.jsonを構成した後、通常のC ++プログラムをデバッグできます。
2.3 opencvをデバッグするには、c_cpp_properties.jsonを構成する必要があります
ctrl + shift + pこれを選択して、c_cpp_properties.jsonを生成します
c_cpp_properties.jsonコンテンツ:
生成に基づいてincludePathのopencvパスを追加するだけです
//作用:添加一些头文件
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/opencv2",
"/usr/include/opencv",
"/usr/include"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
次に、main.cppをデバッグできます。