Ubuntu16.04 下编译安装Opencv,并在VSCode上配置C++调用程序

1前提:

Ubuntu16.04系统

VSCode编辑器(如何安装配置C++请移步我的另一篇博客

Opencv源码(官网下载

安装依赖库

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev libopencv-dev

2编译安装Opencv4:

我的源码是下载后解压到用户的Home目录下的,具体来讲就是 /home/haku/opencv-4.0.0 这样子。

cd /home/haku/opencv-4.0.0
mkdir release
cd release

然后设置cmake编译参数,这里我选择的是默认方式:

sudo cmake ..

然后开始编译:

sudo make

然后就开始编译了,这里需要的时间比较长,请耐心等待,然后我的没有报错,全部完美编译(网上有些人说会报错,但不影响后续的安装使用,所以原则上别动它,让它编译完再说)

等它编译完就开始安装

sudo make install

安装结束后,接着配置VSCode来使用它。

3.配置VScode相关参数:

主要就是工作空间目录下的 c_cpp_properties.json  、 launch.json  、 settings.json 、  tasks.json这四个配置文件,这四个文件在C++程序的工作空间的.vscode目录下都可以自动生成的。具体接着看。

launch.json和task.json主要是配置C++编译调试的,也就是Debug,这在之前的博客讲过,这些文件生成之后,都会一直存在的,这里还需要改动一下,将Opencv的环境参数添加进去,具体如下:

launch.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": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.out",
            "args": [],
            "stopAtEntry": false,
            "MIMode": "gdb",
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build"
        }
    ]
}

 tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g","${workspaceFolder}/${fileBasenameNoExtension}.cpp","-o","${fileBasenameNoExtension}.out",
                "-I","/usr/include",
                "-I","/usr/include/opencv",
                "-I","/usr/include/opencv2",
                "-L","/usr/local/lib/lib*"
            ],
            "problemMatcher":{
                "owner": "cpp",
                "fileLocation":["relative","${workspaceFolder}"],
                "pattern":{
                    "regexp": "^([^\\\\s].*)\\\\((\\\\d+,\\\\d+)\\\\):\\\\s*(.*)$",
                    "file": 1,
                    "line":2,
                    "column":3,
                    "severity": 4,
                    "location": 2,
                    "message": 5
                }
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
            
        }
    ]
}

 c_cpp_properties.json文件之前没有说,这里需要改动了,先Ctrl+Shift+P可以调出控制窗口,再输入edit或者configuration,选择"C/Cpp:Edit Configurations":然后这个文件就出来了,修改如下:

c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include",
                "/usr/local/include/opencv4"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

最后还得修改一下工作空间的settings.json文件,因为这个文件里设置了各种各样的程序如何运行的一些东西,我们可以搜索"code-runner.executorMap",打开这个文件,也是编辑文件的这一部分,这里说不清楚,你打开就看到了,我截张图给大家看下:

Ubuntu16.04 下编译安装Opencv,并在VSCode上配置C++调用程序

就是这样的,这个文件左边是受保护的只读文件,我们只需要修改右半边的工作空间设置就了OK了,具体如下

settings.json

{
    "code-runner.executorMap": {
        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt `pkg-config opencv --libs --cflags opencv` && $dir$fileNameWithoutExt",
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        "perl": "perl",
        "perl6": "perl6",
        "ruby": "ruby",
        "go": "go run",
        "lua": "lua",
        "groovy": "groovy",
        "powershell": "powershell -ExecutionPolicy ByPass -File",
        "bat": "cmd /c",
        "shellscript": "bash",
        "fsharp": "fsi",
        "csharp": "scriptcs",
        "vbscript": "cscript //Nologo",
        "typescript": "ts-node",
        "coffeescript": "coffee",
        "scala": "scala",
        "swift": "swift",
        "julia": "julia",
        "crystal": "crystal",
        "ocaml": "ocaml",
        "r": "Rscript",
        "applescript": "osascript",
        "clojure": "lein exec",
        "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
        "racket": "racket",
        "ahk": "autohotkey",
        "autoit": "autoit3",
        "dart": "dart",
        "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        "haskell": "runhaskell",
        "nim": "nim compile --verbosity:0 --hints:off --run",
        "lisp": "sbcl --script"
    }
}

其实基本没动,就是修改了一点CPP部分,具体为什么要修改呢,因为我们安装好Opencv后,没有配置环境变量,具体如何配置我在网上找了很多,都没有效果,所以我们就给CPP部分添加 `pkg-config opencv --libs --cflags opencv` 这个东西,这个东西好像是引导g++调用opencv的,很关键,没有它程序会报错。

这四个文件配置好之后呢,在终端执行下下面的命令

apt install apt-file
apt-file update
apt-file search opencv.pc

就是找opencv.pc这个文件,如果你前面正确安装了opencv,肯定是能找到的。找到后,执行下面命令

pkg-config --cflags opencv

结果显示 -I opencv opencv2 这就说明环境配置成功了。 我们前面的4个文件也是参照这里的环境配置的!

4.案例:

Ubuntu16.04 下编译安装Opencv,并在VSCode上配置C++调用程序

 成功运行!

参考博客:

        opencv安装参考:https://blog.csdn.net/luanpeng825485697/article/details/81181825

        4个配置文件参考:https://www.cnblogs.com/YiYA-blog/p/10082635.html

                                          https://blog.csdn.net/fdd096030079/article/details/82898489

 

        最后的环境配置参考:https://blog.csdn.net/xiaoxiaodengzi/article/details/80312474