https://blog.csdn.net/jindunwan7388/article/details/80397700

下载和添加依赖包

1、首先更新 apt-get,在安装前最好先更新一下系统,不然有可能会安装失败。在终端输入:

sudo apt-get update
sudo apt-get upgrade

2、接着安装官方给的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

3、接下来安装CMake-gui,在终端输入

sudo apt-get install cmake-qt-gui

下载安装包:
opencv 3.4.1 Source code(zip)
https://github.com/opencv/opencv/releases
23

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

配置OpenCV
解压 两个压缩包,然后将 opencv_contrib 放到 opencv 3.4.1 里面,双击进入解压出来的OpenCV3.2.0文件夹,右键打开终端(或者在别处打开终端,通过输入cd opencv3.2.0进入当前目录下),然后依次输入(不要忘了第三行的最后的空格和两个点):

mkdir build
cd build
cmake-gui ..

3、然后会弹出CMake的图形化界面,在上方的两个路径里面,选择好代码所在文件夹的路径和要安装的路径

4 点击左下方的Configure按钮,选择Unix Makefiles,选择Use default native compilers(默认),然后点击Finish

需要下载一些文件,要等待一段时间。然后CMake即载入默认配置,如下图所示:
窗口的中间部分即配置列表,这里和使用cmake命令直接生成makefile文件一致的。正如上文所述,这里通过图形界面的方式来进行配置,更加直观方便。
6、这里需要对两个地方进行修改:

(1)在CMAKE_BUILD_TYPE 值处输入RELEASE,其他保持不变(如果已经存在就不必修改)。
下方的CMAKE_INSTALL_PREFIX显示了默认的安装目录,这里我修改为: /usr/local/opencv3 (安装成功后,这个文件夹下面是有东西的,如果没有东西,安装没成功)
生成makefile文件最后执行 make install时就会安装到这个目录,这里可以根据个人需求更改。

在OPENCV_EXTRA_MODULES_PATH处,选择输入目录

然后选择opencv_contrib-3.4.1文件夹中的modules文件夹,注意,不是只选中opencv_contrib-3.4.1文件夹就好了,需要选中里面的modules文件夹! 如下图所示,然后点Choose。
注:OPENCV_EXTRA_MODULES_PATH 是用来指定要编译的扩展模块,其中包括OpenCV_contrib模块。

OPENCV_ENABLE_NONFREE 选中(SURF 专利问题)

点击Generate生成配置文件,这一步应该比较快就完成了。

8、接着,在build目录下打开终端,输入

make
sudo make install

配置环境变量
1、安装成功后还需要设置opencv的环境变量。打开文件:

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

2、将以下内容添加到最后:

/usr/local/lib

3、接下来配置库:

sudo ldconfig

4、更改环境变量:

sudo gedit /etc/bash.bashrc

5、在文件后添加:

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

6、保存退出,在运行下面的例程之前,需要重新开启终端来使配置生效。

下面是 SURF 特征点检测 测试代码

#include <iostream>
#include <vector>
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/highgui.hpp>using namespace cv;
using namespace std;int main()
{Mat img1 = imread("/home/zhangjun/Pictures/bookobject.jpg",1);Mat img2 = imread("/home/zhangjun/Pictures/bookscene.jpg",1);if ((img1.data == NULL)||(img2.data ==NULL)){cout << "No exist" << endl;return -1;}Ptr<Feature2D> surf = xfeatures2d::SURF::create(1000);vector<KeyPoint> keypoints_1, keypoints_2;Mat descriptors_1, descriptors_2;surf->detectAndCompute(img1, Mat(), keypoints_1, descriptors_1 );surf->detectAndCompute(img2, Mat(), keypoints_2, descriptors_2 );drawKeypoints(img1, keypoints_1, img1);drawKeypoints(img2, keypoints_2, img2);namedWindow("img1",0);resizeWindow("img1",500,500);imshow("img1", img1);namedWindow("img2",0);resizeWindow("img2",500,500);imshow("img2", img2);FlannBasedMatcher matcher;std::vector< DMatch > matches;matcher.match( descriptors_1, descriptors_2, matches );double max_dist = 0; double min_dist = 100;for( int i = 0; i < descriptors_1.rows; i++ ){ double dist = matches[i].distance;if( dist < min_dist ) min_dist = dist;if( dist > max_dist ) max_dist = dist;}printf("-- Max dist : %f \n", max_dist );printf("-- Min dist : %f \n", min_dist );std::vector< DMatch > good_matches;for( int i = 0; i < descriptors_1.rows; i++ ){ if( matches[i].distance <= max(2*min_dist, 0.02) ){ good_matches.push_back( matches[i]); }}Mat img_matches;drawMatches( img1, keypoints_1, img2, keypoints_2,good_matches, img_matches, Scalar::all(-1), Scalar::all(-1),vector<char>(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );namedWindow("Good Matches",0);resizeWindow("Good Matches",800,800);imshow( "Good Matches", img_matches );for( int i = 0; i < (int)good_matches.size(); i++ ){ printf( "-- Good Match [%d] Keypoint 1: %d  -- Keypoint 2: %d  \n",i, good_matches[i].queryIdx, good_matches[i].trainIdx ); }waitKey(0);return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.4)project( SURF_test )set(OpenCV_DIR "/home/zhangjun/SoftWare/opencv-3.4.1/build")find_package( OpenCV REQUIRED )add_executable( SURF_test surf_test.cpp )target_link_libraries( SURF_test ${OpenCV_LIBS} )

编译运行:
cmake .
make
./SURF_test

ubuntu 16.0.4 opencv 3.4.1 + opencv_contrib 3.4.1 cmake-gui 安装相关推荐

  1. ubuntu 16.0.4 opencv 4.0.0 + opencv_contrib 4.0.0 cmake-gui 安装

    下载和添加依赖包 1.首先更新 apt-get,在安装前最好先更新一下系统,不然有可能会安装失败.在终端输入: sudo apt-get update sudo apt-get upgrade 2.接 ...

  2. 在Ubuntu 16.0.4.5 LTS上安装python 2.7版本的cv2模块

    简介 OpenCV是一个C++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块.  OpenCV有两个Python接口,老版本的cv模块使用OpenCV内置的数据类型,新版本的cv ...

  3. ubuntu 16.0.4安装Opencv3.2.0

    OpenCV安装 此安装在ubuntu16上实验,为C++版本的安装,安装Python版本的没有这么复杂,只需要pip安装即可.注意的是安装之前保证sudo apt-get install libgt ...

  4. ubuntu 16.0.4安装jdk

    ubuntu 安装 jdk 提示:注意版本为16.0.4,不同版本可能稍有不同 文章目录 ubuntu 安装 jdk @[TOC](文章目录) 前言 一.安装方式 二.使用步骤 1.openjdk 2 ...

  5. Ubuntu 16.0 LAMP 配置

    配置服务器配置了一个晚上,在unbuntu上配置lamp的文章不少,但很多都已经不适合16.0系统的了.下面是我的配置过程 (主要参考了这篇在14.04系统上配置LAMP的) 安装apache2+ph ...

  6. Ubuntu 16.04下opencv 3.4.11 的安装及使用示例

    目录 一.安装Opencv 1.安装包 2.配置环境 二.使用示例----图片 三.使用示例----视频 1.虚拟机获取摄像机权限 2.播放视频 3. 录制视频 四.总结 五.参考内容 一.安装Ope ...

  7. ubuntu 16.0.4如何配合网卡,

    ubuntu系统的网卡配置和centos不同.具体配置方法如下 1.查看网卡信息 $ifconfig -a image.png 2.启用网卡ens33 $ifconfig ens33 up 3.配置 ...

  8. ubuntu 16.0安装mysql8_ubuntu16.0.4 安装 mysql8.0.18的

    1.下载mysql.tar.xz 文件 image.png image.png 2.解压到/usr/local/目录,并将文件夹重命名为mysql #解压 sudo tar xvf mysql-8.0 ...

  9. ubuntu 16.0.4 配置 tensorflow-gpu 1.1.0

    今天配了一下tensorflow的gpu版本,感觉有几个坑,网上的资料也比较乱,就想给大家留个比较完整安装和排坑的文档. 我的gpu是gtx 960m 1.安装驱动 没有安装驱动应该是选择x serv ...

最新文章

  1. 逻辑模型三要素-完整性约束
  2. UVALive5379 UVA270 Lining Up
  3. 在线使用Octave、Matlab画单电荷等位线和电力线、matlab的nonconformant arguments错误
  4. 用Tableau画可调整的树状图(Tree Diagram)
  5. php mysql 查询 区分大小写_MySQL查询字符串时区分大小写
  6. iOS中POST请求
  7. 基于Tablestore的Wifi设备监管系统架构实现
  8. Mybatis generator(复制粘贴完成)
  9. vscode中文支持xp_VSCode (Visual Studio Code) V1.43.0下载并设置成中文语言的方法
  10. 安卓拍照上传php服务器,Android拍照上传至PHP服务器并写入MySql数据库(下)
  11. Hustoj mdui Web界面修改
  12. JavaScript中的关系运算符和逻辑运算符
  13. 新闻发布系统数据库设计
  14. Kafka安全认证授权配置
  15. bootmgr is missing
  16. 腾讯副总裁姚星离职创业!一手筹建AI Lab,张潼张正友都曾向他汇报
  17. 红米k50至尊版参数 红米k50至尊版评测值得买吗
  18. matlab读取声音文件
  19. 复杂网络研究中的SIR传播模型(Python实现)
  20. 解决mac excel中文乱码的问题

热门文章

  1. 关于自注意力机制的思考
  2. 如何在 Python 中使用 ggplot2?
  3. 牛!王军等喜提NBT:用AI在肠道超高效“挖”抗菌肽(附独家专访) | 热心肠日报...
  4. Cell:康奈尔大学郭春君组开发针对非模式肠道细菌的基因编辑工具
  5. FiM | 牧医所奶业创新团队建立瘤胃微生物脲酶的靶向宏蛋白质组方法
  6. 被鱼刺扎一下就没了条手臂?这种“吃人肉”的细菌身边并不罕见
  7. 3分和30分文章差距在哪里?
  8. R语言聚类分析--cluster, factoextra
  9. pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有工作日日期(business day)
  10. python代码判断指定日期是当前年的第多少天