ubuntu系统下opencv的编译安装

ubuntu系统下opencv的编译安装

参考https://blog.csdn.net/KIK9973/article/details/118830187

1 安装准备

1.1安装依赖环境(Ubuntu18.04)

下载opencv的依赖,其中第三行的依赖是可选的,前两行的依赖则是必要的。

powershell 复制代码
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev 
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev

1.2下载源码

https://opencv.org/releases/

1.3.可以将源码放在任意目录,解压

powershell 复制代码
cd /mnt/d/tools
unzip -o -d ~/. opencv-4.8.0.zip

2 安装

2.1编译

2.1.1 cmake

powershell 复制代码
cd ~/opencv-4.8.0
mkdir -p build 
cd ./build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=True -D ENABLE_CXX11=1 ..

2.1.2 make

powershell 复制代码
nproc #查看线程数
sudo make -j16    #在build 文件内 执行该命令  数字越大 后续make的过程就越快。
sudo make install

2.2 环境配置

2.2.1 修改etc/bash.bashrc

powershell 复制代码
#打开下列文件
sudo vim /etc/bash.bashrc
#文件末尾添加以下内容 并保存
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
#更新
sudo updatedb
source /etc/bash.bashrc

2.2.2 修改动态链接库

powershell 复制代码
#打开下列文件
sudo vim /etc/ld.so.conf.d/opencv.conf 
# 添加lib路經 在 末尾 保存退出
/usr/local/lib
# 更新
sudo ldconfig

报错: /sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

解决方案:

powershell 复制代码
cd /usr/lib/wsl
sudo mkdir lib2
sudo ln -s lib/* lib2
#更改wsl配置文件,将 /usr/lib/wsl/lib 改为 /usr/lib/wsl/lib2
sudo vim /etc/ld.so.conf.d/ld.wsl.conf
#测试修改是否生效
sudo ldconfig

#永久修改(有时候会报权限问题,直接手动在文件后面加那两行)
sudo cat >> /etc/wsl.conf << EOF
[automount]
ldconfig = fasle
EOF

3 检查安装情况

1.命令行查看安装情况

powershell 复制代码
#终端输入以下两命令,显示正常则安装成功
pkg-config --modversion opencv4 #查看版本号
pkg-config --libs opencv4 #查看libs库

4.程序测试

opencv在下载时已经提供了测试程序

powershell 复制代码
cd ~/opencv-4.8.0/samples/cpp/example_cmake
mkdir build
cd ./build
cmake ..
make
./opencv_example ## 生成一个可执行文件 拖入终端执行 也可
相关推荐
w200512248 小时前
Pod管理
linux·服务器·云原生·容器·k8s·podman
AndrewHZ9 小时前
图像处理入门020 | 图像二值化:阈值分割基础 —— cv2.threshold 五种类型与自适应阈值铺垫
图像处理·opencv·文档扫描·阈值分割·图像二值化·trackbar·自适应阈值
chen<>9 小时前
C++ 六种 memory_order:从原子性到线程间可见性.md
java·linux·开发语言·c++
一直C9 小时前
Linux系统编程|进程间通信IPC全套详解(1)(管道、信号)
linux·c语言·开发语言·网络·青少年编程·visual studio code
库玛西10 小时前
Linux网络编程:HTTP/HTTPS协议核心技术全解析
linux·运维·服务器·网络·c++·http·https
sxd200110 小时前
Vmware和multicast
linux·windows·vmware·无线桥接·multicast
暴力求解10 小时前
Linux网络---NAT代理服务、内网穿透
linux·网络·智能路由器
一直C10 小时前
Linux系统编程|信号进阶 + SystemV IPC(消息队列、共享内存)
linux·c语言·开发语言·算法·青少年编程·vim
_F_y10 小时前
Linux网络常用指令
linux·运维·网络
老当益壮梁奶奶12 小时前
Linux软件编程学习笔记(九):消息队列、共享内存与信号灯详解
linux·c语言·笔记·学习