守望初心

靡有不初,鲜克有终。。。

导航

ubuntu14.04下配置使用openCV3.0

Posted on 2015-04-15 15:41  Reynold Liu  阅读(16039)  评论(0编辑  收藏  举报

[操  作  系  统]    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