使用opencv一般建议使用有contrib扩展功能的版本,不过contrib需要编译,花的时候会长一些,这里主要讲安装了opencv之后,怎么在ubuntu使用vscode来调用opencv
先安装opencv,打开终端输入以下命令,回车
sudo apt install libopencv-dev
成功之后检查
pkg-config --cflags opencv4
结果【这个就是opencv目录】:-I/usr/include/opencv4
pkg-config --modversion opencv4
结果【看来今日此时默认安装的版本是4.6】:4.6.0
pkg-config --libs opencv4
结果【 OpenCV 的库文件】:
-lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_barcode -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_cvv -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_highgui -lopencv_datasets -lopencv_text -lopencv_plot -lopencv_ml -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_wechat_qrcode -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_dnn -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core
再确定下opencv库文件的所在路径
sudo find / -name "*opencv_core*"
可见路径是:/usr/lib/x86_64-linux-gnu/
好的,opencv所有的信息都有了,接下来是配置vscode
新建一个文件夹后,里面新建一个名叫.vscode的文件夹,再增加3个json文件
c_cpp_properties.json
/** c_cpp_properties.json **/
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/opencv4/", //最后这个斜杠应该是要的
"/usr/include/opencv4/opencv2/"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17",
"cppStandard": "gnu++14",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
// "name": "g++.exe - 生成和调试活动文件",
"name": "(gdb) Launch",
"type": "cppdbg",
"preLaunchTask": "build", // 这个应该是必须的
"request": "launch", // launch:启动,attach:附加
"program": "${fileDirname}/${fileBasenameNoExtension}", // 需要调试的程序
"args": [], // 调试时传递给程序的参数
"stopAtEntry": false, // 调试时是否停在程序入口:{true:是,false:否}
"cwd": "${workspaceFolder}", // 工作目录
"environment": [], // 额外的环境变量
"externalConsole": false, // true:输出到外部终端;false:只输出到软件终端(有显示不全的可能)
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
// "preLaunchTask": "C/C++: g++ build active file", // 预编译任务名称,和tasks.json中的label必须相同
"miDebuggerPath": "/usr/bin/gdb" // 调试gdb路径
}
]
}
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g","-std=c++11",
"${file}", // 单个cpp文件
// "${workspaceFolder}/Demo/*.cpp", // 多个cpp文件
// "${workspaceFolder}/src/*.cpp",
"-o",
"${fileDirname}/${fileBasenameNoExtension}", // 要调试的程序,必须与launch.json文件中的"program"相同
"-I", "${workspaceFolder}/include", // 项目include文件
"-I", "/usr/include/opencv4/", // opencv安装的include文件路径
"-I", "/usr/include/opencv4/opencv2/",
"-L", "/usr/lib/x86_64-linux-gnu/", //opencv安装的lib文件路径
"-l", "opencv_stitching",
"-l", "opencv_alphamat",
"-l", "opencv_aruco",
"-l", "opencv_barcode",
"-l", "opencv_bgsegm",
"-l", "opencv_bioinspired",
"-l", "opencv_ccalib",
"-l", "opencv_cvv",
"-l", "opencv_dnn_objdetect",
"-l", "opencv_dnn_superres",
"-l", "opencv_dpm",
"-l", "opencv_face",
"-l", "opencv_freetype",
"-l", "opencv_fuzzy",
"-l", "opencv_hdf",
"-l", "opencv_hfs",
"-l", "opencv_img_hash",
"-l", "opencv_intensity_transform",
"-l", "opencv_line_descriptor",
"-l", "opencv_mcc",
"-l", "opencv_quality",
"-l", "opencv_rapid",
"-l", "opencv_reg",
"-l", "opencv_rgbd",
"-l", "opencv_saliency",
"-l", "opencv_shape",
"-l", "opencv_stereo",
"-l", "opencv_structured_light",
"-l", "opencv_phase_unwrapping",
"-l", "opencv_superres",
"-l", "opencv_optflow",
"-l", "opencv_surface_matching",
"-l", "opencv_tracking",
"-l", "opencv_highgui",
"-l", "opencv_datasets",
"-l", "opencv_text",
"-l", "opencv_plot",
"-l", "opencv_ml",
"-l", "opencv_videostab",
"-l", "opencv_videoio",
"-l", "opencv_viz",
"-l", "opencv_wechat_qrcode",
"-l", "opencv_ximgproc",
"-l", "opencv_video",
"-l", "opencv_xobjdetect",
"-l", "opencv_objdetect",
"-l", "opencv_calib3d",
"-l", "opencv_imgcodecs",
"-l", "opencv_features2d",
"-l", "opencv_dnn",
"-l", "opencv_flann",
"-l", "opencv_xphoto",
"-l", "opencv_photo",
"-l", "opencv_imgproc",
"-l", "opencv_core"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "test",
"isDefault": true
},
"detail": "调试器生成任务"
}
],
"version": "2.0.0"
}
配置好这3个文件之后,就可以添加一个cpp文件来运行测试了
3.cpp,注意这里的图片名,我只写了个11.jpg,那么请把11.jpg放在cpp同一目录,或者自己指定一个绝对路径也可以
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
// 读入一张图片(游戏原画)
Mat img=imread("11.jpg");
// 创建一个名为 "游戏原画"窗口
namedWindow("游戏原画");
// 在窗口中显示游戏原画
imshow("游戏原画",img);
// 等待6000 ms后窗口自动关闭
waitKey(0);
}
或者设置断点,调试
如果安装了CodeRunner,也要设置下
以下是我的修改,可参考下
"cpp": "cd $dir && g++ $fileName -I /usr/include/opencv4/ -I /usr/include/opencv4/opencv2/ -L /usr/lib/x86_64-linux-gnu/ -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_barcode -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_cvv -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_highgui -lopencv_datasets -lopencv_text -lopencv_plot -lopencv_ml -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_wechat_qrcode -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_dnn -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core -fexec-charset=UTF-8 -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
设置完成之后,就可以直接用run code运行代码了
本文暂时没有评论,来添加一个吧(●'◡'●)