ubuntu系统下配置c++环境的opencv

tb6612 发布于 22 天前


一,引言

起因是学长建议我们学一下c++为opencv做一下准备,本人有点急于求成就打算直接开始opencv了(其实是被牛魔的c++难到了又听说opencv用不到多少c++的内容then内心就开始动摇了捏~) 虽然但是也是经过了大半天的努力才把Ubuntu22.04镜像系统下的opencv配置好..

二,准备工作

1,当然是准备一个虚拟机啦~我用的是b站找的vmware(高级版虽然我也不知道高级在哪里)

2,准备Ubuntu的镜像,我是用的清华源镜像网站Index of /ubuntu-releases/22.04/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror提供的Ubuntu22.04.5的镜像。(真心建议用这个版本,本人在使用其他版本时都出现了或多或少的问题,除了红就是红。。)

3,准备opencv的解压包存进u盘里(毕竟用虚拟机去官网下opencv慢的要死)

三,opencv的安装

打开终端输入如下命令更新资源

sudo apt update
sudo apt upgrade//升级软件包

下载各种编译文件

sudo apt install g++
sudo apt install cmake
sudo apt install make

http://opencv.org如果不会Linux就去opencv官网下载只是速度超级慢而已反正我是在win上下好再传输进虚拟机的也可以去github上下载源码 git clone https://github.com/opencv/opencv.git

进入压缩包所在的文件夹通过如下命令解压opencv的压缩包

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libopenexr-dev libtbb-dev

也可以用unzip的命令即 unzip+文件名

解压好后进入opencv的文件在文件下创建一个名为build的文件夹

进入build文件下编译

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..

安装

sudo make install

四,vscode的安装

vscode可以去官网直接下也可以跟opencv压缩包一样,也可以去Ubuntu自带的应用商店下载(不建议,听说报错很多反正我没这么下过),下载后查看一下自己opencv2的路径

我的如上,可以在include下创建一个opencv2的文件夹(别问为什么,听人劝)。用如下命令

sudo ln -s opencv4/opencv2 opencv2

五,使用vscode写opencv代码

先在home的opencv文件夹下创建一个code(其实不在这里创建也完全没有关系,但是我习惯这样)

再使用vscode打开此文件夹,code文件夹下创建.vscode文件夹,创建以下三个文件

// c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",               
                "/usr/local/include/opencv4", //请确保你的opencv opencv2头文件夹安装在这个目录
                "/usr/local/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 - 生成和调试活动文件",
            "type": "cppdbg",                                 // 只能是cppdbg
            "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/local/include",                    // opencv安装的include文件路径
                // "-I", "$/usr/local/include/opencv4",
                // "-I", "$/usr/local/include/opencv4/opencv2",  
                "-L", "$/usr/local/lib",                        //opencv安装的lib文件路径
                "-l", "opencv_core",                            //.so文件,文件原名称“libopencv_core.so”,注意需去除“lib”
                "-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": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "test",
                "isDefault": true
            },
            "detail": "调试器生成任务"
        }
    ],
    "version": "2.0.0"
}

完成后vscode页面如下

结束啦~~~(虽然看着很容易其实并不简单。。。)

题外话

牛魔的当初不知道是在哪个b站up找的ubuntu19版本的镜像装了三个小时频频报错,cmake版本也是低的离谱(最新版是3.35 我的直接来了个2.8),后来才知道这个版本早就不维护了,白忙活三小时,后来换了20版本虽然报错少了很多但是镜像源还是有些问题,包括网速什么的,换了22.04版本后才好了很多所以,真心建议用22.04版本的,(早晚一天我要逮着那个up一顿骂,,)

不告诉你
最后更新于 2025-02-20