0
点赞
收藏
分享

微信扫一扫

编译源码OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib

宁静的猫 2022-11-10 阅读 77


近两个月来接触了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

 

  像这样:

    

编译源码OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib_2d

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

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

  编译结果为:

    

编译源码OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib_git_02

  接下来,执行:

make -j8

  得到的结果为:

    

编译源码OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib_git_03

  到了这个时候,如果仅仅只需要在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

  编译结果为:

    

编译源码OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib_python_04

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

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

    

编译源码OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib_2d_05

  

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

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

import cv2

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

  • C++:我使用的是QT,在pro文件中添加

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/​​博客在我探索过程中给我带来的帮助。

真正的高贵不是优于别人,而是优于过去的自己!

举报

相关推荐

0 条评论