Linux 下编译 OpenCV4
1 运行环境
-
linux 版本:统信 UOS 1030(可以认为是特殊的 ubuntu)
-
Opencv 版本:4.1.1
-
开发语言:C++
2 编译方式
源代码 + cmake
3 opencv 下载
下载地址:
https://opencv.org/opencv-4-1-1/
下载截图:
4 opencv 解压
unzip opencv-4.1.1.zip
5 cmake 下载
opencv 4 要求 cmake 版本大于 3,根据需要下载即可
sudo apt-get cmake
此处我系统自带 cmake 版本为 3.13.4,如下图所示:
cmake -version
6 下载依赖
如果是缺少某个依赖文件,编译过程也不会出错,但是在使用 opencv 函数的时候就是提示错误,只能删了重新编译(即重走 cmake -> make ->make install),非常的坑,所以一定要先下载依赖文件。
必须要安装的依赖,通过命令安装:
sudo apt-get install build-essential git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
如果需要其他的功能,还需安装一些依赖,命令如下:
sudo apt-get install python-dev python-numpy python3-dev python3-numpy
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
7 下载 ippicv
为解决在 cmake 过程中 ippicv_2019_lnx_intel64_general_20180723.tgz 这个文件下载超级慢的问题
下载地址:
链接:https://pan.baidu.com/s/1Mg5m7IygJvxYbjBWOmIikw
提取码:au1o
修改 opencv 配置文件
将网络下载的模式改为本地文件下载的模式,这样就不用在网上下载了
# 打开终端,输入
vim opencv-4.1.1/3rdparty/ippicv/ippicv.cmake
# 将 47 行的
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/"
# 改为手动下载的文件的本地路径(仅供参考,根据自己的路径填写,我下载的地方为 /home/zyw)
"file:/home/zyw/"
8 用 cmake 生成 makefile 文件
在 opencv-4.1.1 下新建目录 install 作为安装目录,新建 build 作为 cmake 目录
cd opencv-4.1.1
mkdir install
mkdir build
在 build目录下执行 cmake,生成 makefile 文件:
cd build
cmake -D CMAKE_INSTALL_PREFIX=../install/ \
-D CMAKE_BUILD_TYPE=RELEASE \
-D OPENCV_GENERATE_PKGCONFIG=On ..
opencv4 默认不生成 .pc 文件(导致无法使用 pkg-config 命令),**OPENCV_GENERATE_PKGCONFIG=ON **才会生成,因此需要开启
cmake 需要的配置选项 可根据自己需要来修改,上述为必须的配置选项,意思是:安装目录为 ../install/,以 RELEASE 版本编译,生成 .pc 文件
成功截图:
9 编译与安装
编译:
make -j4
成功截图:
安装:
make install
成功截图:
10 将编译生成的 opencv4.pc 拷贝进 /usr/lib/pkgconfig/
/usr/lib/pkgconfig/ 为 pkg-config 默认寻找目录
查找 opencv4.pc 所在位置
find ./ -name opencv4.pc
拷贝
sudo cp ./unix-install/opencv4.pc /usr/lib/pkgconfig/
11 配置 opencv 动态库路径
因为我们 opencv 的安装目录为 /home/zyw/opencv-4.1.1/install,而不是 opencv 默认安装目录 /usr/lib,因此 ldconfig 无法找到 opencv 动态库(因为 ldconfig 默认搜寻 /lib和/usr/lib,以及配置文件/etc/ld.so.conf.d 内所列的目录下的库文件),因此需要添加 opencv 库路径目录
sudo vim /etc/ld.so.conf.d/opencv.conf
# 加上自己的 opencv 库路径目录
/home/zyw/opencv-4.1.1/install/lib
# 保存退出
# 更新系统动态库
sudo ldconfig
12 测试 opencv 是否安装正常
pkg-config --cflags --libs opencv4
- pkg-config --cflags opencv4 代表我们安装的头文件路径
- pkg-config --libs opencv4 代表我们安装的库文件路径
成功截图:
13 opencv 可用性测试
cd 你的opencv目录/samples/cpp/
g++ `pkg-config --cflags opencv4` drawing.cpp `pkg-config --libs opencv4` -o drawing.out
./drawing.out
./drawing.out
运行效果:
13 参考资料
1、Linux下安装OpenCV4(适用于Ubuntu等) - 小树谦谦谦 - https://www.jianshu.com/p/f54b0fc13811
2、linux下编译安装opencv生成opencv.pc - 浓茶淡酒 - https://blog.csdn.net/s15810751918/article/details/107705387
3、opencv 解决ippicv下载慢的问题: ippicv_2019_lnx_intel64_general_20180723 - 高精度计算机视觉 - https://spacevision.blog.csdn.net/article/details/101632917?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2
4、linux中ldconfig的使用介绍 - chenzixun0 - https://blog.csdn.net/chenzixun0/article/details/56278632
5、Linux学习笔记(十一) -- Opencv库的编译和安装 - 张慕风 - https://blog.csdn.net/u014337397/article/details/80895940?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.pc_relevant_default&spm=1001.2101.3001.4242.1&utm_relevant_index=3
6、linux c++ opencv4安装指南 - 小小小绿叶 - https://blog.csdn.net/litt1e/article/details/109954670
7、(细节项)在Linux下用正确的姿势配置编译安装OpenCV - Trick大魔王 - https://zhuanlan.zhihu.com/p/118222087