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",打開這個文件,也是編輯文件的這一部分,這裏說不清楚,你打開就看到了,我截張圖給大家看下:

就是這樣的,這個文件左邊是受保護的只讀文件,我們只需要修改右半邊的工作空間設置就了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.案例:

 成功運行!

參考博客:

        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

      

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章