经典推荐:TX2+ubuntu16.04+QT配置opencv3.4.1(完美方案)

opencv3.0开始分成主库+contrib库,一些不稳定的不成熟的涉及专利纠纷的库文件放置在contrib库中,contrib需要用户单独安装。本文采用opencv3.4.1配置TX2,其他opencv版本可类推。具体操作如下:

  1. 下载opencv3.4.1及对应的contrib
    下载opencv3.4.1主模块source,地址:https://opencv.org/releases/page/2/
    https://opencv.org/releases/page/2/
    下载opencv3.4.1对应版本的contrib
    地址:https://github.com/opencv/opencv_contrib/releases?after=4.0.0-beta
    在这里插入图片描述
    注意:opencv与从contrib版本必须保持一直。
  2. 创建软件安装目录
    2.1在home下创建MySoftware(任意命名)安装软件,创建opencv安装文件夹
    cd /home/nvidia/MySoftware    
    mkdir opencv
    cd /home/nvidia/MySoftware/opencv
主:nvidia为TX2的名称,需要替换成自己的

2.2将下载完成的opencv3.4.1解压至/home/nvidia/MySoftware/opencv,将contrib解压至opencv3.4.1,如下图:
在这里插入图片描述

  1. 创建build目录
    进入opencv安装目录/home/nvidia/MySoftware/OpenCv/opencv-3.4.1,创建build文件夹
    cd /home/nvidia/MySoftware/opencv/opencv3.4.1
    mkdir build

5.打开新终端,安装依赖项
依赖关系:

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

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

    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
  1. opencv IPPICV 和 face_landmark_model.dat更改下载源
    网络不好时, opencv IPPICV 和 face_landmark_model.dat下载容易失败,可在编译前参考如下博文处理

    ubuntu16.04 配置TX2 过程中opencv IPPICV 和 face_landmark_model.dat下载不下来的问题解决
    https://mp.csdn.net/mdeditor/97647529#

  2. CMake Opencv源码:该步骤大约需要2小时左右
    进入usr/local,创建opencv341目录,用于install

    cd usr/local
    mkdir opencv341
 进入build目录:
 `cd /home/nvidia/MySoftware/opencv/opencv3.4.1/build`
 在该目录下运行:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv341 -D OPENCV_EXTRA_MODULES_PATH=/home/nvidia/MySoftware/OpenCv/opencv-3.4.1/opencv_contrib-3.4.1/modules/ -D PYTHON_DEFAULT_EXECUTABLE=$(which python3) -D WITH_TBB=ON -D WITH_EIGEN=ON ..

在这里插入图片描述
运行完成后如下图,说明没有错误:
在这里插入图片描述
运行sudo make
在这里插入图片描述
完成后运行sudo make install
在这里插入图片描述
一切顺利,没有报错,至此安装完成,下面进行系统配置。
8. 完成上述步骤后,接着配置环境变量等操作

sudo gedit /etc/ld.so.conf.d/opencv.conf

添加安装目录下/usr/local/opencv346的lib目录路径,并保存,输入内容如下:
在这里插入图片描述

 sudo ldconfig
 sudo gedit /etc/bash.bashrc 

在bashrc文件末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv341/lib/pkgconfig  
export PKG_CONFIG_PATH

在这里插入图片描述
9. 更新数据库

source /etc/bash.bashrc
sudo updatedb

如果updatedb报错,请参考:
ubuntu16.04 命令sudo updatedb报错: command not found解决方案https://blog.csdn.net/qq_41854650/article/details/97638260

查看opencv版本:

pkg-config --modversion opencv 

至此OpenCV 3.4.1+contrib安装+配置完成。
11.测试是否安装成功
opencv3.0开始中SIFT匹配是在opencv_contrib库中的,可以用它来做一个简单的测试。
参考:

  1. cv::xfeatures2d::SIFT Class Reference:https://docs.opencv.org/3.4.1/d5/d3c/classcv_1_1xfeatures2d_1_1SIFT.html#gsc.tab=0
  2. OpenCV3.1 xfeatures2d::SIFT 使用:http://blog.csdn.net/lijiang1991/article/details/50855279
    QT的pro配置:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

INCLUDEPATH += /usr/libaarch64-linux-gnu

INCLUDEPATH += /usr/local/opencv341/include \
INCLUDEPATH += /usr/local/opencv341/include/opencv \
INCLUDEPATH += /usr/local/opencv341/include/opencv2

LIBS += /usr/local/opencv341/lib/libopencv_*.so
LIBS += /usr/local/opencv341/lib/libopencv_*.so.3.4
LIBS += /usr/local/opencv341/lib/libopencv_*.so.3.4.1

程序:

#include <iostream>
#include <opencv2/opencv.hpp>  //头文件
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
using namespace cv;  //包含cv命名空间
using namespace std;

int main()
{
    //Create SIFT class pointer
    Ptr<Feature2D> f2d = xfeatures2d::SIFT::create();
    //读入图片
    Mat img_1 = imread("1.jpg");
    Mat img_2 = imread("2.jpg");
    //Detect the keypoints
    vector<KeyPoint> keypoints_1, keypoints_2;
    f2d->detect(img_1, keypoints_1);
    f2d->detect(img_2, keypoints_2);
    //Calculate descriptors (feature vectors)
    Mat descriptors_1, descriptors_2;
    f2d->compute(img_1, keypoints_1, descriptors_1);
    f2d->compute(img_2, keypoints_2, descriptors_2);
    //Matching descriptor vector using BFMatcher
    BFMatcher matcher;
    vector<DMatch> matches;
    matcher.match(descriptors_1, descriptors_2, matches);
    //imshow("match", matches);
    //绘制匹配出的关键点
    Mat img_matches;
    drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_matches);
    imshow("【match图】", img_matches);
    //等待任意按键按下
    waitKey(0);
}

输出结果:
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值