Ubuntu14.04安装OpenCV3.1.0的Contrib模块

    xiaoxiao2022-07-07  195

    想要使用OpenCV里面SIFT、SURF等检测算法,但听说都被统一集成到一个叫“Contrib”的模块里面了(关键是xFeatures2d.hpp)。于是去官网下载,重新编译覆盖安装了一下。

    opencv的安装之前已经写过,这里补充额外模块的安装过程。

    1.下载Contrib包源码

    官网地址:

    https://github.com/opencv/opencv_contrib/releases

    查找对应的版本下载即可,注意要与OpenCV的自身版本对应。我使用的是3.1.0。

    2.解压

    下载完成后,将压缩包里的源码解压到opencv目录的同一路径下。

    3.编译安装

    进入先前编译opencv用的“build”文件夹(上图)。

    cd build

    执行

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

    注意后面“EXTRA_MODULES_PATH”选择了额外模块所在的路径。最后两个点(当前路径)不要漏!

    继续执行

    sudo make

    make的过程比较长,半个小时。

    最后执行

    sudo make install

    这样就加入了额外模块对openCV进行了覆盖安装。

    编译不报错,并且看到下面的信息,肯定就ok了。 库文件都可以在上图显示的路径里找到。

    4.测试

    就用xfeatures2d来简单测试SIFT算法。代码如下:

    SIFTextract.cpp

    #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; using namespace std; int main(int argc,char** argv) { //创建SIFT类指针 Ptr<Feature2D>f2d = xfeatures2d::SIFT::create(); //读入灰度图 Mat img_1 = imread(argv[1],CV_LOAD_IMAGE_GRAYSCALE); //检测特征点 vector<Keypoint>keypoints_1; f2d->detect(img_1,keypoints_1); //计算描述子 Mat descriptors_1; f2d->compute(img_1,keypoints_1,descriptors_1); //输出显示 Mat outimg1; drawKeypoints(img_1,keypoints_1,outimg1,Scalar::all(-1),DrawMatchesFlags::DEFAULT); imshow("SIFT Features",outimg1); //等待按下按键 waitkey(0); return 0; }

    写个CMakeList来编译代码:

    CMakeList.txt

    cmake_minimum_required( VERSION 2.8) project( vo ) set( CMAKE_BUILD_TYPE "Release" ) set( CMAKE_CXX_FLAGS "-std=c++ -o3" ) include_directories( ${OpenCV_INCLUDE_DIRS} ) add_exetuable( SIFTextract SIFTextract.cpp ) target_link_libraries( SIFTextract ${OpenCV_LIBS} )

    代码、CMakeList、图片放在同一路径下,用Cmake编译:

    sudo mkdir build cd build sudo cmake .. sudo make

    生成可执行项目。

    代码所在路径执行

    build/SIFTextract 1.png

    结果:

    最新回复(0)