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