• OpenCV


     

      近两个月来接触了Linux系统,在老板的建议下翻了Ubuntu的牌子,我安装的版本是16.04,用习惯之后感觉蛮好的,比Windows要强。好啦,废话不说啦,下面开始说在Ubuntu中安装OpemCV+OpenCV_Contrib。

      首先,准备一下开发环境:

    • Ubuntu 16.04 64位
    • cmake
    • ant
    • jdk
    • git
    • python

      接下来,从github中down下OPenCV + OpenCV_Contrib库,可以从https://github.com/opencv上下载(注意版本对应),也可以通过指令下载(建议使用):

    git clone https://github.com/Itseez/opencv.git
    git clone https://github.com/Itseez/opencv_contrib.git

      这个过程需要等待一段时间,具体依赖与你的网速啦,下载成功后,可以在你的home目录下看见opencv和opencv_contrib两个文件夹,将opencv_contrib目录移到opencv目录下。

      在下载的过程中,我们可以添加opencv所需要的依赖库:

    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

      以上步骤完成后,我们进入opencv目录,创建build目录:

    mkdir build

      像这样:

        

      进入build目录,开始编译,执行(注意后面的两个点不能少):

    cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

      编译结果为:

        

      接下来,执行:

    make -j8

      得到的结果为:

        

      到了这个时候,如果仅仅只需要在python或者C中使用OpenCV,就可以直接执行下一步了,如果需要在java中使用OpenCV,需要修改一些源文件。编辑features2d_manual.hpp文件,目录文件在/modules/features2d/misc/java/src/cpp中。

      具体修改:

    • 在第8行,在#include "features2d_converters.hpp"添加#include "opencv2/xfeatures2d.hpp"
    • 在第121行,将
      复制代码
      //case SIFT:
      //    name = name + "SIFT";
      //    break;
      //case SURF:
      //    name = name + "SURF";
      //    break;
      复制代码

       改为

      复制代码
      //case SIFT:
      //    fd=xfeatures2d::SIFT::create();
      //    break;
      //case SURF:
      //    fd=xfeatures2d::SURF::create();
      //    break;
      复制代码
    • 在第248行,将
      复制代码
      //case SIFT:
      //    name = name + "SIFT";
      //    break;
      //case SURF:
      //    name = name + "SURF";
      //    break;
      复制代码

       改为

      复制代码
      case SIFT:
          de = xfeatures2d::SIFT::create();
          break;
      case SURF:
          de = xfeatures2d::SURF::create();
          break;
      复制代码
    • 在第257行,将
      //case BRIEF:
      //    name = name + "BRIEF";
      //    break;

       改为

      case BRIEF:
          de = xfeatures2d::BriefDescriptorExtractor::create();
          break;
    • 在第263行,将
      //case FREAK:
      //    name = name + "FREAK";
      //    break;

       改为

      case FREAK:
          de = xfeatures2d::FREAK::create();
          break; 

       修改完毕。

      接下来,执行:

    sudo make install

      编译结果为:

        

      这样,我们就可以在Ubuntu中使用OPencv了,适用于各种语言。

      我们可以在/usr/local/lib下看见opencv编译的结果:

        

      

      最后,简单说一下在各个语言下的使用:

    • python:直接导入cv2的库就可以啦
      import cv2

       这里面编译的时候要注意python2和python3的区别,python2编译的opencv在python3中是不可以使用的

    • C++:我使用的是QT,在pro文件中添加
      1
      2
      3
      4
      5
      6
      7
      INCLUDEPATH +=
              /usr/local/include
              /usr/local/include/opencv
              /usr/local/include/opencv2
       
      LIBS +=
          /home/fanxuan/opencv/build/lib/libopencv_java331.so   
    • Java:我说使用的是IDEA,将opencv/build/lib目录设置在IDEA设置位jvm的运行空间即可。

      最后的最后,老样子,代码没有啦,大家可以看一下opencv自带的例子,或者转到www.baidu.com或者github.com

      感谢外国友人https://elbauldelprogramador.com/en/how-to-compile-opencv3-nonfree-part-from-source/博客在我探索过程中给我带来的帮助。

    真正的高贵不是优于别人,而是优于过去的自己!
  • 相关阅读:
    itext itextpdf 版本概要介绍
    github上的优秀项目和开发环境配置
    tfs2012 的体验地址
    Linux网卡攻略
    展现图表JavaScript库 Javascript web charts [参考地址]
    JavaEE的几个参考
    dsl boo3个例子 9
    已读的和在读的一些C++经典图书
    WinRT参考资料
    Linux性能监测工具
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/11484575.html
Copyright © 2020-2023  润新知