一、下載opencv:
https://opencv.org/releases/
我下載的為opencv4.5.4版本,可以直接下載.zip文件,可以選擇其他版本。
Sources版本即為.zip版本:
二、安裝opencv:
Linux默認下載目錄為Downloads,在這里用終端打開
1、解壓
輸入命令:unzip opencv-4.5.4.zip
;
如果報錯,安裝unzip:sudo apt-get install unzip
;
2、安裝依賴的庫:
先更新一下
sudo apt update
sudo apt upgrade
sudo apt install g++
sudo apt install cmake
sudo apt install make
3、安裝opencv依賴項
此處只是選擇部分opencv的依賴項,因為opencv的依賴項很多,部分依賴項也不一定用得上??梢詤⒖季W(wǎng)上的資料安裝自己需要的依賴。
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
解壓完發(fā)現(xiàn)opencv是一個cmake工程,里面有CMakeList.txt,因此需要cmake生成Makefile,
建一個build文件夾并進去:mkdir build
,cd build
。
4、使用cmake工具:
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
其中需要添加OPENCV_GENERATE_PKGCONFIG=YES
進去,否則后面添加路徑的時候會報錯:
“->pkg-config --modversion opencv”時顯示“ No package ‘opencv’ found”
使用make
或者make -j4
,make -j8
, make -12
,來編譯,j后面這個數(shù)字時調(diào)用多線程進行編譯,請根據(jù)自己的電腦性能選擇,否則容易報錯。
“fatal error: Killed signal terminated program cc1plus compilation terminated.”
5、使用make install來安裝。
sudo make install
opencv4的安裝路徑為
后面配置路徑會用到:
/usr/local/include/opencv4
庫文件的路徑為:
/usr/local/lib
三、配置OpenCV編譯環(huán)境
1、添加路徑:
首先將OpenCV的庫添加到路徑,從而可以讓系統(tǒng)找到
命令:
sudo gedit /etc/ld.so.conf.d/opencv4.conf
執(zhí)行此命令后打開的可能是一個空白的文件,不用管,只需要在文件末尾添加
/usr/local/lib
注意,此處如果在cmake
的時候設(shè)置了例如CMAKE_INSTALL_PREFIX=/usr/local/opencv4
的其他路徑,這部分請根據(jù)自己情況改變。
2、使得剛才的配置路徑生效:
執(zhí)行如下命令:
sudo ldconfig
3、配置bash:
sudo gedit /etc/bash.bashrc
在文件最后添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
4、執(zhí)行如下命令使得剛才的配置生效:
source /etc/bash.bashrc
5、更新一下:
sudo updatedb
如果這里報錯,需要先安裝mlocate
apt-get install mlocate
6、配置完成,檢驗一下
可以輸入pkg-config --modversion opencv4
來查看opencv的版本,如果輸出4.5.4則表明安裝成功。
如果像下面這樣報錯,請檢查自己路徑配置。實在不行,重新安裝,重復(fù)以上步驟。
四、make過程中可能會出錯:
fatal error: Killed signal terminated program cc1plus compilation terminated.
這是因為虛擬機的內(nèi)存小了,有三個方法解決
1、直接擴大虛擬機的內(nèi)存;
直接在虛擬機設(shè)置中,增加分配的內(nèi)存。
2、增加swap分區(qū)
首先使用free -m
來查看swap分區(qū)大小
(1)創(chuàng)建分區(qū)路徑
sudo mkdir -p /var/cache/swap/
(2) 設(shè)置分區(qū)的大小,bs=64M是塊大小,count=64是塊數(shù)量,所以swap空間大小是bs*count=4096MB=4GB
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
(3) 設(shè)置該目錄權(quán)限
sudo chmod 0600 /var/cache/swap/swap0
(4)創(chuàng)建SWAP文件
sudo mkswap /var/cache/swap/swap0
(5)激活SWAP文件
sudo swapon /var/cache/swap/swap0
(6) 查看SWAP信息是否正確
sudo swapon -s
此處參考https://blog.csdn.net/weixin_44796670/article/details/121234446
3、減少make中進程的數(shù)量
更改以上設(shè)置,重新編譯就不再會報錯。
五、VSCode配置
新建vscode工程,
1、配置 c_cpp_properties.json文件
按下**“ctrl+shift+p”**,搜索打開如下圖所示第一個配置:
即c_cpp_properties.json
文件,往里面添加opencv4路徑:
"/usr/local/include/opencv4"
注意:我安裝的opencv的路徑是 include/opencv4/opencv2
也可以定義為
"/usr/local/include/"
實現(xiàn)一個軟鏈接即可
cd /usr/local/include/
sudo ln -s opencv4/opencv2 opencv2
2、配置tasks.json文件:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file", /* 與launch.json文件里的preLaunchTask的內(nèi)容保持一致 */
"command": "/usr/bin/g++",
"args": [
"-std=c++11",
"-g",
//"${file}", /* 編譯單個文件 */
"${fileDirname}/*.cpp", /* 編譯多個文件 */
"-o",
"${fileDirname}/${fileBasenameNoExtension}", /* 輸出文件路徑 */
/* 項目所需的頭文件路徑 */
"-I","${workspaceFolder}/",
"-I","/usr/local/include/",
"-I","/usr/local/include/opencv4/",
"-I","/usr/local/include/opencv4/opencv2",
/* 項目所需的庫文件路徑 */
"-L", "/usr/local/lib",
/* OpenCV的lib庫 */
"/usr/local/lib/libopencv_*",
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
3、配置launch.json文件:
按下**“ctrl+shift+p”**,搜索launch.json打開如下圖所示第一個配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}", //程序文件路徑
"args": [], //程序運行需傳入的參數(shù)
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true, //運行時是否顯示控制臺窗口
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
寫個簡單的讀取圖片程序:可以跑通文章來源:http://www.zghlxwxcb.cn/news/detail-591354.html
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
const char* imagename = "xiaomaolv.jpg";//此處為的圖片路徑
//從文件中讀入圖像
cv::Mat img = cv::imread(imagename, 1);
//如果讀入圖像失敗
if (img.empty()) {
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
cv::imshow("image", img); //顯示圖像
cv::waitKey();
return 0;
}
至此,我們實現(xiàn)了在Ubuntu20.04中安裝opencv并配置完成!文章來源地址http://www.zghlxwxcb.cn/news/detail-591354.html
到了這里,關(guān)于Ubuntu20.04在vsCode配置opencv的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!