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

编程入门 行业动态 更新时间:2024-10-27 09:33:50

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

下载opencv3.4.1及对应的contrib
下载opencv3.4.1主模块source,地址:opencv./releases/page/2/

下载opencv3.4.1对应版本的contrib
地址:github./opencv/opencv_contrib/releases?after=4.0.0-beta

注意:opencv与从contrib版本必须保持一直。创建软件安装目录
2.1在home下创建MySoftware(任意命名)安装软件,创建opencv安装文件夹
    cd /home/nvidia/MySoftware    mkdir opencvcd /home/nvidia/MySoftware/opencv
主:nvidia为TX2的名称,需要替换成自己的

2.2将下载完成的opencv3.4.1解压至/home/nvidia/MySoftware/opencv,将contrib解压至opencv3.4.1,如下图:

创建build目录
进入opencv安装目录/home/nvidia/MySoftware/OpenCv/opencv-3.4.1,创建build文件夹
    cd /home/nvidia/MySoftware/opencv/opencv3.4.1mkdir 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-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev     libswscale-devsudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev  libtiff-dev libjasper-dev libdc1394-22-dev

opencv IPPICV 和 face_landmark_model.dat更改下载源
网络不好时, opencv IPPICV 和 face_landmark_model.dat下载容易失败,可在编译前参考如下博文处理

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

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

    cd usr/localmkdir 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 ldconfigsudo 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报错: mand not found解决方案blog.csdn.net/qq_41854650/article/details/97638260

查看opencv版本:

pkg-config --modversion opencv 

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

cv::xfeatures2d::SIFT Class Reference:docs.opencv./3.4.1/d5/d3c/classcv_1_1xfeatures2d_1_1SIFT.html#gsc.tab=0OpenCV3.1 xfeatures2d::SIFT 使用:blog.csdn.net/lijiang1991/article/details/50855279
QT的pro配置:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qtSOURCES += main.cppINCLUDEPATH += /usr/libaarch64-linux-gnuINCLUDEPATH += /usr/local/opencv341/include \
INCLUDEPATH += /usr/local/opencv341/include/opencv \
INCLUDEPATH += /usr/local/opencv341/include/opencv2LIBS += /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 pointerPtr<Feature2D> f2d = xfeatures2d::SIFT::create();//读入图片Mat img_1 = imread("1.jpg");Mat img_2 = imread("2.jpg");//Detect the keypointsvector<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->pute(img_1, keypoints_1, descriptors_1);f2d->pute(img_2, keypoints_2, descriptors_2);//Matching descriptor vector using BFMatcherBFMatcher 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);
}

输出结果:

更多推荐

完美,方案,经典,QT

本文发布于:2023-05-27 16:19:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/299890.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:完美   方案   经典   QT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!