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

来源:互联网 发布:自学计算机 知乎 编辑:程序博客网 时间:2024/06/06 00:21


写在前边:

据官方说法,目前还不是太稳定的算法模块都在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

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

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

1
2
3
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

  

2.下载源码:

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

b.也可以从github上clone:

1
2
3
cd ~/<my_working_directory>  //比如工作目录为opencv即,cd ~/opencv
git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git

  

3.CMake Opencv源码:

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

1
2
3
cd ~/opencv
mkdir build  //建立一个build目录,把cmake的文件都放着里边
cd build   //进入build目录

  

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

1
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib/modules/> ..


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

其中 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
 在CODE上查看代码片派生到我的代码片
  1. cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/ -D CMAKE_INSTALL_PREFIX=/usr/local ../opencv  


mac编译情况:
t took me a good few hours to get this fixed. Here's what I did:wget https://github.com/Itseez/opencv/archive/3.1.0.zipwget https://github.com/Itseez/opencv_contrib/archive/3.1.0.zipunzip 3.1.0.zipunzip 3.1.0.zip.1cd opencv-3.1.0mkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=RELEASE \      -D CMAKE_INSTALL_PREFIX=/usr/local \      -D BUILD_opencv_java=OFF \      -D WITH_IPP=OFF -D WITH_1394=OFF \      -D WITH_FFMPEG=OFF \      -D BUILD_EXAMPLES=OFF \      -D BUILD_TESTS=OFF \      -D BUILD_PERF_TESTS=OFF \      -D BUILD_DOCS=OFF \      -D BUILD_opencv_python2=ON \      -D BUILD_opencv_python3=ON \      -D BUILD_opencv_video=OFF \      -D BUILD_opencv_videoio=OFF \      -D BUILD_opencv_videostab=OFF \      -D PYTHON_EXECUTABLE=$(which python) \      -D OPENCV_EXTRA_MODULES_PATH=/Users/mona/computer_vision/Face_Recognition/opencv_contrib-3.1.0/modules ..In the last one make sure to have the absolute path not something like -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/opencv_contrib-3.1.0/modules ..Also you would need vi cmake/OpenCVDetectVTK.cmake and change line 6 so it has vtkRenderingOpenGL2 instead of vtkRenderingOpenGL:6 find_package(VTK QUIET COMPONENTS vtkRenderingOpenGL2 vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE)shareimprove this answer



linux文件目录结构如下

opencv

---opencv

---opencv_contrib

---build

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

1
make -j7 # 并行运行七个jobs,这一步也在build目录中进行

  

5.安装。

1
sudo make install

  

6.运行测试。

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

1
2
cd <opencv3.1.0_dir>/samples/python/
python asift.py

结果:

 

 

参考文献:

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 ,在文本中输入如下代码

[csharp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #include <iostream>  
  2. #include <opencv2/highgui/highgui.hpp>  
  3.   
  4. using namespace std;  
  5. using namespace cv;  
  6.   
  7. int main(int argc,char* argv[])  
  8. {  
  9.     const string WINDOW_NAME = "lena";  
  10.     const string INPUT_PIC = "lena.jpg";  
  11.     Mat srcImg = imread(INPUT_PIC);  
  12.     if(srcImg.empty())  
  13.     {  
  14.         cout << "image do not exist" <<endl;  
  15.         return -1;  
  16.     }  
  17.     namedWindow(WINDOW_NAME);  
  18.     imshow(WINDOW_NAME,srcImg);  
  19.     waitKey(0);  
  20.     return 0;  
  21. }  

注: 图片和.cpp 在相同的目录下
有三种常规方式进行编译,链接和执行的。
1.使用终端命令

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

[csharp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. g++ test.cpp -lopencv_core -lopencv_highgui -lopencv_imgcodecs  

或者

[csharp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. g++ test.cpp `pkg-config --libs opencv`  

然后执行 ./a.out 即可

2. 使用Makefile文件

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

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #first way  
  2. main:main.o  
  3.     g++ -o main main.o -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs  
  4. main.o:main.cpp  
  5.     g++ -c main.cpp  
  6.   
  7. # second way  
  8. #CFLAGS = `pkg-config --cflags opencv`  
  9. #LIBS = `pkg-config --libs opencv`  
  10.   
  11. #% : %.cpp  
  12. #   g++ -o $@ $<  $(CFLAGS) $(LIBS)  

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

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

3. 使用Cmake 的方式

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

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. cmake_minimum_required(VERSION 2.8)   
  2. PROJECT (name)  
  3. find_package(OpenCV REQUIRED )  
  4. set( NAME_SRC  
  5.     ./main.cpp      
  6. )  
  7.   
  8. #set( NAME_HEADERS         
  9. #     include/header.h  
  10. #)  
  11.   
  12. INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/include )  
  13. link_directories( ${CMAKE_BINARY_DIR}/bin)  
  14. set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)  
  15.   
  16. #add_executable( name ${NAME_SRC} ${NAME_HEADERS} )  
  17. add_executable( name ${NAME_SRC} )  
  18.   
  19. target_link_libraries( name ${OpenCV_LIBS} )  

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

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

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

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

make

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

发现有 name 文件

执行 ./name 命令即可。




0 0
原创粉丝点击