专业的编程技术博客社区

网站首页 > 博客文章 正文

ubuntu vscode设置 c++ opencv 非contrib版本

baijin 2024-09-04 02:11:51 博客文章 5 ℃ 0 评论

使用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运行代码了


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表