ubuntu 14.04 64位 安装Opencv3.1.0 (包含opencv_contrib模块)

写在前边:

据官方说法,目前还不是太稳定的算法模块都在opencv_contrib里边,由于不稳定,所以不能在release版本里发行,只有在稳定以后才会放进release里边。但是这里边有很多我们经常要用的算法,比如SIFT,SURF等(在xfeatures2d 模块里边)。官网提供了说明,可以把opencv_contrib扩展模块添加编译到已安装的opencv3.0.0里边,也可以安装的时候直接把扩展模块编译进去一并安装。

1.依赖关系:

  • GCC 4.4.x or later
  • CMake 2.8.7 or higher
  • Git
  • GTK+2.x or higher,including headers (libgtk2.0-dev)
  • pkg-config
  • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev,python-numpy)
  • ffmpeg or libav development packages: libavcodec-dev,libavformat-dev,libswscale-dev
  • [optional] libtbb2 libtbb-dev
  • [optional] libdc1394 2.x
  • [optional] libjpeg-dev,libpng-dev,libtiff-dev,libjasper-dev,libdc1394-22-dev

注:官方文档中虽然说其中一些依赖包是可选的,但是最好还是都装上,以防出问题。

以上依赖包可用以下命令安装:

  

2.下载源码:

a.可以从OpenCV官网直接下载:http://opencv.org/downloads.html

b.也可以从github上clone:

  

3.CMake Opencv源码:

建立一个编译目录(例如:/build)把cmake后的文件都放在这里边。

  

然后开始cmake,这里需要注意几个cmake的参数,比较重要。

注:命令中最后的" .. "(空格+两个点)千万不要忘记

其中 CMAKE_BUILD_TYPE=Release / Debug

OPENCV_EXTRA_MODULES_PATH 就是用来指定要编译的扩展模块,后边加上刚下载的opencv_contrib模块的路径即可。

这里官方文档上还给出了其他一些参数,但是我没用过,这里就不再描述了。有需要的可以查看http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html

进入上述中新建的build文件目录中,进行如下命令

eg:

[csharp]
view plain
copy

  1. cmake-DCMAKE_BUILD_TYPE=Release-DOPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/-DCMAKE_INSTALL_PREFIX=/usr/local../opencv


linux文件目录结构如下

opencv

---opencv

---opencv_contrib

---build

4.把代码编译成可执行文件,这里官方推荐使用多进程编译,推荐七个进程:

  

5.安装。

  

6.运行测试。

我是用Python+opencv的,我这里直接运行opencv自带的python的例子程序

结果:

 

参考文献:

http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html

https://github.com/Itseez/opencv_contrib/blob/master/README.md

转载:http://www.cnblogs.com/asmer-stone/p/5089764.html

在使用c++语言进行运行

当运行出现如下错误时

./a.out: error while loading shared libraries: libopencv_core.so.3.1: cannot open shared object file: No such file or directory

首先进行配置:

进入终端,输入 sudo vi /etc/ld.so.conf.d/opencv.conf

然后在文件中插入以下文字

/usr/local/opencv/

输入:wq 退出

在终端中输入 sudo ldconfig 即可

http://stackoverflow.com/questions/19164343/opencv-libopencv-core-so-2-4-cannot-open-shared-object-file-no-such-file-or

然后新建文件 vi test.cpp ,在文本中输入如下代码

copy

#include<iostream>

  • #include<opencv2/highgui/highgui.hpp>
  • usingnamespacestd;
  • namespacecv;
  • intmain(intargc,char*argv[])
  • {
  • conststringWINDOW_NAME="lena";
  • stringINPUT_PIC="lena.jpg";
  • MatsrcImg=imread(INPUT_PIC);
  • if(srcImg.empty())
  • {
  • cout<<"imagedonotexist"<<endl;
  • return-1;
  • }
  • namedWindow(WINDOW_NAME);
  • imshow(WINDOW_NAME,srcImg);
  • waitKey(0);
  • return0;
  • }
  • 注: 图片和.cpp 在相同的目录下

    有三种常规方式进行编译,链接和执行的。

    1.使用终端命令

    进行编译和链接 ,在命令行中输入

    copy

    g++test.cpp-lopencv_core-lopencv_highgui-lopencv_imgcodecs

    或者

    copy

    g++test.cpp`pkg-config--libsopencv`

    然后执行 ./a.out 即可

    2. 使用Makefile文件

    在当前目录下建立一个Makefile 文件,然后在文件中添加如下内容:

    [plain]
    copy

      #firstway
    1. main:main.o
    2. g++-omainmain.o-lopencv_core-lopencv_highgui-lopencv_imgproc-lopencv_imgcodecs
    3. main.o:main.cpp
    4. g++-cmain.cpp
    5. #secondway
    6. #CFLAGS=`pkg-config--cflagsopencv`
    7. #LIBS=`pkg-config--libsopencv`
    8. #%:%.cpp
    9. #g++-o$@$<$(CFLAGS)$(LIBS)



    添加完成后,在当前目录先执行 eg: make main

    执行完成后,输出main 文件,执行 ./main 即可

    3. 使用Cmake 的方式

    在当前目录中添加CMakeLists.txt 文件,在文件中添加如下内容:

    copy

    cmake_minimum_required(VERSION2.8)

  • PROJECT(name)
  • find_package(OpenCVREQUIRED)
  • set(NAME_SRC
  • ./main.cpp
  • )
  • #set(NAME_HEADERS
  • #include/header.h
  • #)
  • INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
  • link_directories(${CMAKE_BINARY_DIR}/bin)
  • set(EXECUTABLE_OUTPUT_PATH${CMAKE_BINARY_DIR}/bin)
  • #add_executable(name${NAME_SRC}${NAME_HEADERS})
  • add_executable(name${NAME_SRC})
  • target_link_libraries(name${OpenCV_LIBS})

  • 添加完成后,在当前目录中新建一个build目录,mkdir build,

    然后切换到build目录中,使用 cd build

    在build文件夹目录中 执行cmake 命令,使用示例如下:

    cmake .. // .. 代表上一级目录 ,

    make

    执行完成后,会有bin 目录生成,进入bin目录,cd bin

    发现有 name 文件

    执行 ./name 命令即可。

    dawei

    【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。