转载自
每次学习新东西或者换新的电脑,最让人头疼的就是环境的安装了。网上有一大堆教程,不过总地来讲,比较混乱,有些甚至有误导性,当然也不乏一些有质量的博客。为了方便自己以后重复安装以及能够帮助到有需要的朋友,在此将相关有用的博客整理一下。
这里主要讲一些如何在Ubuntu(12.04)下安装Opencv(2.4.9)。Opencv的源码可以在其官网下载,也可以在百度网盘下载。 Opencv的最近的一些版本都是使用cmake来编译的,其配置过程基本上是一样的。
一、依赖包安装
Ubuntu下安装软件或多或少都需要安装一些依赖包(软件)。opencv也不例外。
1. build-essential 软件包,为编译程序提供必需软件包的列表信息,这样软件包才知道头文件、库函数在哪里。还会下载依赖的软件包,安装gcc/g++/gdb/make 等基本编程工具,最后才组成一个开发环境。
[plain] view plaincopy
- sudo apt-get install build-essential
2. 下面依赖关系主要是为了能够支持读写图片以及视频等。
[plain] view plaincopy
- sudo apt-get install libgtk2.0-dev libavcodec-dev libavformat-dev libtiff4-dev libswscale-dev libjasper-dev
3. 安装cmake,可以官网上下载源码编译,也可以在百度网盘下载2.8.12版本,当然可以直接使用apt-get方法。
[plain] view plaincopy
- sudo apt-get install cmake
4. 安装pkg-config,它是一个提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件。
[plain] view plaincopy
- sudo apt-get install pkg-config
二、编译安装过程
1. 使用cmake来检测编译环境以及生成makefile以及其他project信息,在使用cmake过程可以设置一些参数。
在本目录下使用cmake,注意后面的点表示在当前目录下寻找CMakeLists.txt。
[plain] view plaincopy
- cmake .
也可以在可以在另外建一个文件夹,最常见的就是子目录。当然在构建的时候也可以配置一些参数:
[plain] view plaincopy
- cd opencv-2.4.9
- mkdir release
- cd release
- cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
2. 使用make编译
[plain] view plaincopy
- make
3. 使用make install 安装
[plain] view plaincopy
- sudo make install
4. 上面的过程基本上完成了opencv的安装。但是并不能够马上用它,opencv还包含很多动态链接库。你可以在文件/etc/ld.so.conf中添加 /usr/local/lib(这个跟安装目录有关, {CMAKE_INSTALL_PREFIX}/lib),也可以在/etc/ld.so.conf.d 目录下增加一个conf文件(可以命名为 opencv.conf),同样添加 /usr/local/lib
使用下面的动态库管理命令ldconfig,让opencv的相关链接库被系统共享
[plain] view plaincopy
- sudo ldconfig -v
5. 完成了动态库的共享,还不能使用opencv来编程,还需要为程序指定openvc的头文件位置。这里使用pkg-config命令来完成。首先在 /etc/profile 中添加
[plain] view plaincopy
- export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
pkg-config 维护着一个关于opencv的配置文件,这个文件(opencv.pc)在目录 /usr/local/lib/pkgconfig,这个文件记录着opencv的一些动态库信息,还有头文件信息
通过pkg-config 命令可以列出关于opencv的配置信息:
三、测试
1. 在解压的opencv目录下找到 samples/c/build_all.sh,运行该文件
[plain] view plaincopy
- ./build_all.sh
2. 找其中一个来运行看一下效果,例如 find_obj程序:
至此,关于opencv在Ubuntu下的安装成功了,尽情地遨游在计算机视觉的世界里吧!