[操 作 系 统] Ubuntu 14.04 LTS
[OpenCV版本] 3.0.0-beta
[Eclipse 版 本] 3.8.1
需要知识:
- Linux系统shell命令基础
- 编译原理基础知识,预编译->编译->汇编->链接
- make 、cmake知识
- IDE使用经验
- gcc,g++编译器知识
一、编译安装opencv3.0
1. 准备环境
直接编译安装opencv一般是会报错的,有很多依赖工具需要先安装。主要是:cmake, build-essential, pkg-config, python-dev, python-numpy等,视自己情况而定。
$ sudo apt-get install build-essential cmake libopencv-dev libgtk2.0-dev pkg-config python-dev python-numpy
2. 下载opencv3.0源码
直接去opencv.org(github) 上下载linux源码包:
$ wget https://github.com/Itseez/opencv/archive/3.0.0-beta.zip
3. 解压组织、编译、安装
解压文件,新建一个文件夹用于安放编译结果,然后安装(选择安装在/usr/local下面)
$ unzip opencv-3.0.0-beta.zip $ cd opencv-3.0.0-beta $ mkdir release $ cd release $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON .. //注意CMakeList.txt在上一层文件夹 $ make -j $(nproc) // make -j 多核处理器进行编译(默认的make只用一核,很慢),$(nproc)返回自己机器的核数 $ make install //把编译结果安装到 /usr/local的 lib/ 和 include/下面
4. 环境配置
可编辑文本配置部分:/etc/ld.so.conf.d/ 添加 opencv.conf 文件,记录库安装位置;更新配置
$ cd /etc/ld.so.conf.d $ sudo vi opencv.config // insert "/usr/local/lib" :q $ sudo ldconfig
有的地方说,需要配置/etc/bash.bashrc 中PKG_CONFIG_PATH 环境变量,貌似不需要。
(貌似,上面的opencv.conf都不用配置。只要 make install 就会在/usr/local/lib/pkgconfig下面产生opencv.pr的包含、链接配置)。
检查包含、链接配置是否正确:
$ pkg-config opencv --cflags --libs $ -I/usr/local/include/opencv -I/usr/local/include /usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_imgcodecs.so /usr/local/lib/libopencv_imgproc.so /usr/local/l ib/libopencv_ml.so /usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_shape.so /usr/local/lib/libopencv_stitch ing.so /usr/local/lib/libopencv_superres.so /usr/local/lib/libopencv_ts.a /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videoio.so /usr/local/l ib/libopencv_videostab.so
二、使用opencv库
1. 命令行形式
直接编写C 或者C++ 程序,然后分别用gcc,g++编译器生成可执行程序。
1) C程序版:
#include <highgui.h> int main(int argc, char **argv) { IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR); cvNamedWindow("Image_show",CV_WINDOW_AUTOSIZE); cvShowImage("Image_show",img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("Image_show"); return 0; }
编译过程:
$ gcc test.c -o test `pkg-config opencv --cflags --libs`
2) C++程序版:
#include <opencv2/opencv.hpp> using namespace cv; int main( int argc, char** argv ) { Mat image; image = imread( argv[1], 1 ); if( argc != 2 || !image.data ) { printf( "No image data \n" ); return -1; } namedWindow( "Display Image", WINDOW_AUTOSIZE ); imshow( "Display Image", image ); waitKey(0); return 0; }
编译过程:
$ g++ first.cpp -o first `pkg-config opencv --cflags --libs` // 包含、链接参数一定要放在后面
2. CMake运行形式
cmake 是先将程序所需的依赖、原料组织起来,产生Makefile,然后在又make来编译生成可执行程序。最重要的就是编写CMakeList.txt文件。以上文C++程序为例,CMakeList.txt为:
cmake_minimum_required(VERSION 2.8) project( first ) find_package( OpenCV REQUIRED ) add_executable( first frist.cpp ) target_link_libraries( first ${OpenCV_LIBS} )
然后,CMake,再make:
$ cmake . $ make $ ./first
3. IDE开发工具
在IDE工具(如VS,Eclipse)中利用opencv库,和以上两种方法考虑的地方一样,都是要配置好include 和 lib 部分。
具体Ubuntu下用Eclipse的方法,下面继续。
三、eclipse下C++开发环境
1. 安装eclipse
Ubuntu下安装很简单,直接在software center里就有。或者直接命令行apt-get install
2. 配置C++开发环境
打开eclipse,在help 菜单下选择 Install new software。打开的install对话框中,work with下拉菜单选择Indigo Update Site - http://download.eclipse.org/releases/indigo/源。网络刷新后:
1) Collaboration中选择Mylyn Context Connector:C\C++ Development组件,然后安装,重启eclipse;
2) 继续回到install对话框,在Programming Language中选择C\C++相关的组件,如Development Tools,Development Tools SDK,CDT Visual C++ Support等。
安装好以上组件之后,就可以在eclipse里面新建C++工程。
3. opencv实践
1) 新建一个空的C++工程,然后添加source folder,source file;将上文的C++读图代码拷贝进去。这时肯定会提示有很多问题,编译肯定出错。
2) 接下来就是配置好包含文件和链接库。右击project explorer里面的工程,打开properties,点开C\C++ Build选项,再点击设置Setting。
a) 设置包含include。在GCC C++ Compiler下面的includes里面添加include path:/usr/local/include,/usr/local/include/opencv,/usr/local/include/opencv(视自己的代码选择include,保险的话,三个都设置上)。
b) 设置链接库。 在GCC C++ Linker下面的Libraries里面,先添加search path为:/usr/local/lib;然后逐个在Libraries中添加opencv_core, opencv_highgui, opencv_imgproc, opencv_imgcodes(貌似是新多出来的一个,不加要报错)。
3) 配置完毕,project --> Build All。另外说明,如果用IDE里面的属性来添加程序参数,文件路径名最好用绝对路径(其当前路径应该为你的项目一级目录,跟据这个设相对路径亦可)。
Reference:
[1] Rodrigo Berriel‘s website: http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-ubuntu-14-04/
[2] Using OpenCV with Eclipse: http://docs.opencv.org/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html