ubuntu16.04安装opencv3.2.0过程实录

首先介绍一下我的开发环境:

物理机:windows 10 64位;
虚拟机:Virtualbox 5.20;
Linux平台:Ubuntu 16.04 64位;
OpenCV源码版本:OpenCV3.2.0

目的:在虚拟机下的Ubuntu 16.04系统上手动安装OpenCV3.2.0,经过源码下载、CMake配置、编译、安装、测试这几个步骤。
【该过程被写成了脚本,可通过脚本一键完成安装:https://blog.csdn.net/wanvan/article/details/83000744

1.去官网下载opencv,在本教程中选用的时opencv3.2.0,其他版本的配置方法异曲同工。
下载链接http://opencv.org/releases.html,选择sources版本

2.解压下载下来的zip包

unzip opencv-3.2.0.zip

3.安装的是cmake软件,使用指令

apt-get install cmake
接着查看版本,测试是否安装成功:
root@emouse:/home# cmake --version
cmake version 3.5.1

由于我们需要时有的是cmake界面来配置,所以我么要安装器ui界面,其指令是:
apt-get install cmake-gui

备注:如果觉得自带的cmake版本不符合要求,可以自行下载安装包,其安装过程是:
下载最新版的安装包:
http://www.cmake.org/cmake/resources/software.html
这里下载已经编译好的,这样只需要解压至需要的目录下即可使用:
tar zxvf cmake-2.8.10.2-Linux-i386.tar.gz –C /usr/local/
设置环境变量:
sudo gedit /home/emouse/.bashrc
在打开的文件后添加:
export PATH=$PATH:/usr/local/cmake-2.8.10.2-Linux-i386/bin
安装完成后就可以使用上面通过检查其版本来看是否安装完成。

4.安装依赖库 ,如果提醒需要apt-get update,那就先sudo su进入root权限,再sudo apt-get update,然后在执行下面命令
sudo apt-get install pkg-config
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

先安装 libgtk2.0-dev 和 pkg-config,,否则后期编译运行程序会出现类似如下的问题:
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /usr/local/opencv/OpenCV-2.0.0/src/highgui/window.cpp, line 100
terminate called after throwing an instance of ‘cv::Exception’

5.使用cmake进行配置
方式1:使用cmake-gui 进行配置 【推荐此图形方式】
#cmake-gui 打开cmake的gui界面,开始进行配置。
cmake主要用于进行一些配置设定,从而生成用于编译安装的makefile文件,通过界面进行参数的配置和设定,非常直观、方便。在配置中指定源码和编译目录以及生成方式。
按照下图的步骤进行配置:
在这里插入图片描述

配置时可以选上:WITH_QT , WITH_OPENGL等。

当第一次configure配置完后,再次点击configure,最后点击generate,当出现有generate Done则表示完成。其中的/usr/local是用于存放生成的lib与dll文件,上面的CONFIGURATION_TYPES指的是进行两钟模式的lib和dll文夹生成,其是这一步还不会生成lib和dll,而是生成makefile文件,里面包含了我们的一些设置,为了生成lib和dll。

在这里插入图片描述

解决:ippicv_linux_20151201.tgz 下载失败的问题
ubuntu下安装opencv3.2出现-- ICV: Downloading ippicv_linux_20151201.tgz…
多半会下载超时,之后就会提示很多错误。则可以自己手动下载ippicv_linux_20151201.tgz
下载链接:https://raw.githubusercontent.com/Itseez/opencv_3rdparty/81a676001ca8075ada498583e4166079e5744668/ippicv/ippicv_linux_20151201.tgz
然后复制替换到opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/目录下

方式2:通过终端指令来配置相应的参数来生成makefile文件

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/OpenCV

(这里的PREFIX路径是自己定义的位置,其替代了默认路径/usr/local)如果使用全部使用默认路径则可以直接使用指令:

cmake .
注意别忘了这个点。只是这里通过图形界面的方式来进行配置,更加直观方便。

6.编译源码&安装
接下来使用cd定位到之前配置的二进制编译目录OpenCV/BuildOutput/OpenCV_Linux_X64
文件夹下,使用如下指令分别进行编译和安装:

make -j4
make install

在我电脑上编译大概耗时10分钟。编译时界面如下:
在这里插入图片描述

编译完成时的界面:
在这里插入图片描述

这上面的两条指令主要是为了对应编译器下的dll、lib文件,我们可以通过指令来查看make是否成功,然后再执行make install指令,检测正确与否指令是:
echo $?
输入这条命令回车后,输出的结果是0,那么就说明成功编译,否则就是出错了,echo $?表示检查上一条命令的退出状态,程序正常退出返回0

make install 完成后的界面【也可以看到库的安装路径:/usr/local】:
在这里插入图片描述

/usr/local/lib下OpenCV库列表:
在这里插入图片描述

7.接下来就是配置lib库:

在linux系统下安装了带有动态库的程序后,会在ld.so.conf.d文件目录下生产相应程序的.conf文件,其里面包含了
此软件运行需要装载的动态库路径,所以我们需要把我们使用cmake配置时的路径,我们使用的是默认路径,则我们的指令是:

sudo gedit /etc/ld.so.conf.d/opencv.conf

打开配置文件后就输入路径(这个文件夹一般是空的),其为:
/usr/local/lib

注意:在默认路径下在生成lib是会自动生成一个lib文件夹的。完成上的步骤后,这里的库文件仍然不能被调用,因为为linux系统的特性是,新加载的库文件需要缓存到一个叫ld.so.cache文件里(其里面包含了/etc/ld.so.conf中指定的目录中查找到的所有的库,按顺序排列),否则使用该软件是会报错,说缺少xxx库,而使用的指令是:

   ldconfig

8.最后配置环境变量
其中pkgconfig文件夹里包含了软件的.pc文件,这个是包含了库的路径之类得东西,使用的指令是:

gedit /etc/bash.bashrc
在文件后添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存退出,重启计算机后就可以使用opencv例程来测试配置成功与否。

/usr/local/lib/pkgconfig/opencv.pc 文件包含了所有OpenCV路径跟库链接
在这里插入图片描述

9.测试

使用如下命令进一步检查OpenCV安装情况
在这里插入图片描述

测试编译的库

测试的代码:
#include <stdio.h>
#include <cv.h>
#include <highgui.h>

int main(void)
{
IplImage *img = cvLoadImage(“baidu.png”, 1);
cvNamedWindow(“Example”, CV_WINDOW_AUTOSIZE);
cvShowImage(“Example”, img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow(“Example”);
return 0;

}

编译:
g++ -o main main.c pkg-config --cflags --libs opencv 【注意带" "符号,后面pkg-config --cflags --libs opencv`必须要,不然编译出错】

./main 运行截图:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wanvan/article/details/83054795