https://opencv.org/releases/
我下载的为opencv4.5.4版本,可以直接下载.zip文件,可以选择其他版本。
Linux默认下载目录为Downloads,在这里用终端打开
输入命令:unzip opencv-4.5.4.zip
;
如果报错,安装unzip:sudo apt-get install unzip
;
先更新一下
sudo apt update
sudo apt upgrade
sudo apt install g++
sudo apt install cmake
sudo apt install make
此处只是选择部分opencv的依赖项,因为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
解压完发现opencv是一个cmake工程,里面有CMakeList.txt,因此需要cmake生成Makefile,
建一个build文件夹并进去:mkdir build
,cd build
。
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后面这个数字时调用多线程进行编译,请根据自己的电脑性能选择,否则容易报错。
“fatal error: Killed signal terminated program cc1plus compilation terminated.”
sudo make install
opencv4的安装路径为
后面配置路径会用到:
/usr/local/include/opencv4
库文件的路径为:
/usr/local/lib
首先将OpenCV的库添加到路径,从而可以让系统找到
命令:
sudo gedit /etc/ld.so.conf.d/opencv4.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加
/usr/local/lib
注意,此处如果在cmake
的时候设置了例如CMAKE_INSTALL_PREFIX=/usr/local/opencv4
的其他路径,这部分请根据自己情况改变。
执行如下命令:
sudo ldconfig
sudo gedit /etc/bash.bashrc
在文件最后添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
sudo updatedb
如果这里报错,需要先安装mlocate
apt-get install mlocate
可以输入pkg-config --modversion opencv4
来查看opencv的版本,如果输出4.5.4则表明安装成功。
如果像下面这样报错,请检查自己路径配置。实在不行,重新安装,重复以上步骤。
fatal error: Killed signal terminated program cc1plus compilation terminated.
这是因为虚拟机的内存小了,有三个方法解决
sudo mkdir -p /var/cache/swap/
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
sudo chmod 0600 /var/cache/swap/swap0
sudo mkswap /var/cache/swap/swap0
sudo swapon /var/cache/swap/swap0
sudo swapon -s
此处参考https://blog.csdn.net/weixin_44796670/article/details/121234446
更改以上设置,重新编译就不再会报错。
按下**“ctrl+shift+p”**,搜索打开如下图所示第一个配置:
即c_cpp_properties.json
文件,往里面添加opencv4路径:
"/usr/local/include/opencv4"
注意:我安装的opencv的路径是 include/opencv4/opencv2
也可以定义为
"/usr/local/include/"
实现一个软链接即可
cd /usr/local/include/
sudo ln -s opencv4/opencv2 opencv2
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file", /* 与launch.json文件里的preLaunchTask的内容保持一致 */
"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"
}
按下**“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": [], //程序运行需传入的参数
"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"
}
]
}
写个简单的读取图片程序:可以跑通
#include
#include
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;
}
至此,我们实现了在Ubuntu20.04中安装opencv并配置完成!