这是第一次写博客,主要参考了两篇博客:
https://www.cnblogs.com/laizhenghong2012/p/11329916.html
https://blog.csdn.net/qq_33591712/article/details/84757017
(1)一台Ubuntu 16.04 LTS操作系统,建议选择速度较快的国内更新源并且更新系统,推荐国内的阿里云或者清华,下图选择的是阿里云
sudo apt-get update
sudo apt-get upgrade
sudo apt-get update
sudo apt-get upgrad
(2)安装最新版本的cmake-gui,进入https://cmake.org/download/下载最新版本的cmake源代码
解压:
tar -zxvf cmake-3.16.0.tar.gz
先安装cmake(Ubuntu软件库中的旧版cmake)
sudo apt-get install cmake
编译并安装最新版本cmake,按步运行
cd cmake-3.15.2/
mkdir build
cd build
cmake ..
make
sudo make install
cmake源码安装之后是没有GUI的,要安装cmake-gui,还需要安装cmake-qt-gui
sudo apt-get install cmake-qt-gui
下载OpenCV 4.1.1的源代码和对应4.1.1版本的opencv_contrib-4.1.1源代码
(1)安装OpenCV依赖项
sudo apt-get install build-essential
#OpenCV官网中安装的是旧版本的libgtk2.0-dev,这里我们安装新版本的libgtk-3-dev
sudo apt-get install git libgtk-3-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
#OpenCV官网中安装2.7版本的python-dev和python-numpy,这里我们安装python 3版本的python3-dev和python3-numpy
sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
(2)解压:
tar -zxvf opencv-4.1.1.tar.gz
tar -zxvf opencv_contrib-4.1.1.tar.gz
(3)使用cmake-gui生成makefile在OpenCV-4.1.1中建立build目录
cd opencv-4.1.1/
mkdir build
(4)打开cmake-gui,设定source code目录为 /home/onetism/opencv-4.1.1/
onetism是用户名,每个电脑设置不一样,选择自己的即可。
设定binaries目录为刚才新建的build目录,也就是/home/onetism/opencv-4.1.1/build
(5)OpenCV默认生成的python版本是python 2.7,为了让OpenCV编译生成python 3版本的opencv_python3,需要添加一个编译选项。在cmake-gui当中,点击Add Entry,如下图所示,填入编译选项名字PYTHON_DEFAULT_EXECUTABLE
和系统中python 3的路径/usr/bin/python3.5
(依实际情况而定)即可。
(6)完成以后点击configure
,按默认操作即可,等待完成,然后进行编译配置,将OPENCV_GENERATE_PKGCONFIG
打开,新版本的OpenCV默认把这个编译选项给关掉了!如果该选项没有打开,pkg-config就没法使用了。这样,你想在命令行里直接编译opencv程序会是很痛苦的事情,只能借助CMake解决。
(7)为了编译opencv_contrib,需要在cmake-gui中将编译选项OPENCV_EXTRA_MODULES_PATH
填入contrib库所在的路径,比如/home/your-name/opencv_contrib-4.1.1/modules/
(8)做好将Python 2取消,因为本次安装的是Python 3
(9)编译安装OpenCV生成Makefile之后,进入/home/onetism/opencv-4.1.1/build
,编译并安装。然后是漫长的等待过程。
make -j4
sudo make install
make -j
用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
(10)验证:验证pkg-config功能是否正确,回到主目录
pkg-config --cflags --libs opencv4
(11)验证opencv_python3是否正确安装
安装之前我己经安装过了ROS系统,而ROS系统使用的Python 2.7,因此导致import cv2
报出如下错误
解决方法是ROS系统中的给cv2.so
改个名字,或者参考论坛其他方法After install ROS Kinetic, cannot import OpenCV
cd /opt/ros/kinetic/lib/python2.7/dist-packages/
sudo mv cv2.so cv2_ros.so
(12)配置环境变量
sudo vim ~/.bashrc
在最后行添加export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
,保存退出
至此基本完成,不知还有什么问题没有,测试还没做,后续再更新。