[关闭]
@CrazyHenry 2018-03-25T11:28:52.000000Z 字数 2655 阅读 1977

Ubuntu16.04+OpenCV3.4.1源码文件安装

vvvvOpenCV学习


按照官网的教程走下来没有问题。

1.依赖

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

2.下载解压

3.Build with CMake

  1. cd ~/opencv //opencv为下载的版本目录
  2. mkdir build
  3. cd build

image_1c9atco0jt0p1vgail91lnf3ta9.png-33.4kB

在build目录里:

  1. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

在build目录里:

  1. make -j7 # runs 7 jobs in parallel

在build目录里:

  1. sudo make install

3.用Cmake编译测试

按照官网的教程没有问题

3.1DisplayImage.cpp

  1. #include <stdio.h>
  2. #include <opencv2/opencv.hpp>
  3. using namespace cv;
  4. int main(int argc, char** argv )
  5. {
  6. if ( argc != 2 )
  7. {
  8. printf("usage: DisplayImage.out <Image_Path>\n");
  9. return -1;
  10. }
  11. Mat image;
  12. image = imread( argv[1], 1 );
  13. if ( !image.data )
  14. {
  15. printf("No image data \n");
  16. return -1;
  17. }
  18. namedWindow("Display Image", WINDOW_AUTOSIZE );
  19. imshow("Display Image", image);
  20. waitKey(0);
  21. return 0;
  22. }

3.2CMakeLists.txt

  1. cmake_minimum_required(VERSION 2.8)
  2. project( DisplayImage )
  3. find_package( OpenCV REQUIRED )
  4. include_directories( ${OpenCV_INCLUDE_DIRS} )
  5. add_executable( DisplayImage DisplayImage.cpp )
  6. target_link_libraries( DisplayImage ${OpenCV_LIBS} )

3.3编译

上边两个文件放在同一目录,进入该目录:

  1. cmake . #注意 有个点 .
  2. make

会生成可执行文件DisplayImage在当前目录:

  1. ./DisplayImage lena.jpg #当前目录放一个lena.jpg文件

4.使用g++直接编译

使用g++直接编译会出现问题

  1. g++ DisplayImage.cpp -o 1 `pkg-config --cflags --libs opencv`

编译之后执行的时候会出现:

  1. $ ./1 lana.jpg
  2. ./1: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory

image_1c9avclpc1gdug35vlit50hg99.png-55.9kB

目前认为是opencv的环境变量没有设置的原因,可以使用pkg-config来解决这个错误。因此用Cmake编译opencv的程序是最好的方式。

pkg-config参考:https://blog.csdn.net/honpey/article/details/8933933

5.编译contrib

在windows下Cmake 额外的contrib库会生成一个VS的工程,然后用VS编译工程。而在Ubuntu系统,会生成makefile,然后用make就可以生成,显然Ubuntu的操作更为简便。

contrib库的工作主要在人脸识别,目前没有用到的机会,但是可以尝试编译。

下载解压

  1. https://github.com/opencv/opencv_contrib/archive/3.2.0.zip

网上有一个Cmake案例,但是个人感觉冗余太多

  1. #build更多选项
  2. $ cmake -D CMAKE_BUILD_TYPE=RELEASE \
  3. -D CMAKE_INSTALL_PREFIX=/home/fanzong/anaconda2/envs/tensorflow \
  4. -D INSTALL_PYTHON_EXAMPLES=ON \
  5. -D INSTALL_C_EXAMPLES=OFF \
  6. -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules \
  7. -D PYTHON_EXCUTABLE=/home/fanzong/anaconda2/envs/tensorflow/bin/python \
  8. -D WITH_TBB=ON \
  9. -D WITH_V4L=ON \
  10. -D WITH_QT=ON \ # 1
  11. -D WITH_GTK=ON \
  12. -D WITH_OPENGL=ON \
  13. -D BUILD_EXAMPLES=ON ..

完整编译:

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

局部(只编译contrib):

  1. cmake -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib/modules/> ..

在build里:

  1. make -j5

contrib官方:https://github.com/opencv/opencv_contrib

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注