最近研究一个项目时需要用到OpenCV,于是自己尝试在Ubuntu 14.04系统下安装了这个开发环境。下面就将具体的过程记录一下,便于后期查阅和同行分享。
〇、开发环境
首先介绍一下我的开发环境:
物理系统:Win 10 64位;虚拟工具:Virtualbox 5.2.2;虚拟系统:Ubuntu 14.04;软件版本:OpenCV 4.0.0;
一、准备工作
首先,需要在你的机器上安装一系列必要的工具,包括:
sudo apt-get update # 这是为了更新你的软件源sudo apt-get install build-essential # 这是为了安装编译所需的库sudo apt-get install cmake pkg-config git# 这是为了安装一些必要的工具sudo apt-get install libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libtiff4.dev libswscale-dev libjasper-dev libdc1394-22-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
然后,你可以去网上下载OpenCV的源码,我是采取git仓库克隆的方式,直接获取最新的版本,如下:
git clone /opencv/opencv
二、编译安装
1、建立编译目录
源码下载完成后,进入该目录下,执行以下语句:
cd opencvmkdir buildcd build
这是为了在源码的根目录下建立一个临时目录,用于存放编译所产生的文件,不至于污染源码,使得你的源码可以根据不同的配置命令分别编译出多份可执行文件,每一份都很清晰,不至于混在一起。这个思路,有一个很官方的名字叫OUT SOURCE BUILD,意思就是在代码之外的地方进行编译。而与其相对的,就是IN-SOURCE BUILD,意味在代码内进行编译。所以,如果你不按照我上面的步骤新建一个目录然后到目录里面去编译的话,系统就会给出一个提示说“In-source builds are not allowed.”,这里就不截图了。
2、编译安装源码
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..makesudo make install
说明一下:
第一步中,我配置了两个参数,第一个参数是指定程序为发布版本,第二个参数是指定安装目录,你可以根据你的需要自定义修改(不过强烈建议大家不要改,就按这个/usr/local目录,不然后面可能会遇到一些麻烦);第一步中,可能会需要下载一个IPPICV插件,据网上不少同学说,该插件不好下载,耗时较久,容易失败,同时也提供了一些解决方案。可是我自己尝试了三次,都很快就下载好了,因此在此不做多说,如果哪位同学发现自己编译的过程中下载该插件时卡住,那么请自行百度;第三步中,一定要记得加上sudo,不然会提示权限不够;
三、配置环境
1、添加库路径
打开文件进行编辑:
sudo vi /etc/ld.so.conf.d/opencv.conf
输入下面的内容,然后保存退出
/usr/local/lib
2、添加环境变量
打开文件进行编辑:
sudo vi /etc/profile
在末尾加入:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATHexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
更新环境变量:
sudo source /etc/profile
登出,或者重启,然后输入命令:
pkg-config --modversion opencv # 查看linux下的opencv安装版本(注意中间是两个横线)4.0.0
如果没有出错,说明安装成功。
四、测试效果
完成了上述的所有步骤,就已经万事俱备,只欠东风了。下面我们就开始进行验证测试。
进入opencv的源码目录,里面有一个sample/cpp/example_cmake的子目录,里面有一个很简单的例程,我们就用这个例程来进行演示:
cd opencv/samples/cpp/example_cmake/cmake . # 请注意,这里的cmake后有一个空格,然后是一个点号make
编译成功了,运行一下试试:
leon@Ubuntu:~/opencv/samples/cpp/example_cmake$ ./opencv_example Built with OpenCV 4.0.0-dev(opencv_example:13315): GStreamer-CRITICAL **: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failedVIDEOIO ERROR: V4L: can't open camera by index 0No capture
图像如下:
这是因为我的是虚拟机,没有摄像头,因此显示了黑屏。这一点在上面的输出提示信息中也可以看到。如果你的是物理机,也有摄像头,那么就会显示出摄像头的画面并叠加上hello opencv的提示语句。
到此,所有工作全部顺利完成!恭喜!
五、编后语
如果刚才配置编译和安装目录的时候,没有设置为缺省的“/usr/local”目录, 而是设置了其他的目录(比如/usr/local/opencv-4.0.0这个目录),则有可能会在后面在应用的过程中遇到一个问题,就是使用cmake命令编译某个工程项目时,提示说:
CMake Error at CMakeLists.txt:39 (find_package):By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "OpenCV", butCMake did not find one.Could not find a package configuration file provided by "OpenCV" with anyof the following names:OpenCVConfig.cmakeopencv-config.cmakeAdd the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"provides a separate development package or SDK, be sure it has beeninstalled.
原因就是因为安装opencv时没有使用的默认的路径,导致cmake找不到opencv。解决方法也很简单,执行cmake命令前,先输入下面的语句:
export OpenCV_DIR=/usr/local/opencv-4.0.0# 这里的/usr/local/opencv-4.0.0目录就是你安装的实际目录
然后再执行cmake命令,就可以了!
如果觉得《Ubuntu14.04系统下安装配置OpenCV 4.0.0开发环境全过程》对你有帮助,请点赞、收藏,并留下你的观点哦!