ubuntu 16.0.4 opencv 3.4.1 + opencv_contrib 3.4.1 cmake-gui 安装
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 安装相关推荐
- 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.接 ...
- 在Ubuntu 16.0.4.5 LTS上安装python 2.7版本的cv2模块
简介 OpenCV是一个C++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块. OpenCV有两个Python接口,老版本的cv模块使用OpenCV内置的数据类型,新版本的cv ...
- ubuntu 16.0.4安装Opencv3.2.0
OpenCV安装 此安装在ubuntu16上实验,为C++版本的安装,安装Python版本的没有这么复杂,只需要pip安装即可.注意的是安装之前保证sudo apt-get install libgt ...
- ubuntu 16.0.4安装jdk
ubuntu 安装 jdk 提示:注意版本为16.0.4,不同版本可能稍有不同 文章目录 ubuntu 安装 jdk @[TOC](文章目录) 前言 一.安装方式 二.使用步骤 1.openjdk 2 ...
- Ubuntu 16.0 LAMP 配置
配置服务器配置了一个晚上,在unbuntu上配置lamp的文章不少,但很多都已经不适合16.0系统的了.下面是我的配置过程 (主要参考了这篇在14.04系统上配置LAMP的) 安装apache2+ph ...
- Ubuntu 16.04下opencv 3.4.11 的安装及使用示例
目录 一.安装Opencv 1.安装包 2.配置环境 二.使用示例----图片 三.使用示例----视频 1.虚拟机获取摄像机权限 2.播放视频 3. 录制视频 四.总结 五.参考内容 一.安装Ope ...
- ubuntu 16.0.4如何配合网卡,
ubuntu系统的网卡配置和centos不同.具体配置方法如下 1.查看网卡信息 $ifconfig -a image.png 2.启用网卡ens33 $ifconfig ens33 up 3.配置 ...
- 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 ...
- ubuntu 16.0.4 配置 tensorflow-gpu 1.1.0
今天配了一下tensorflow的gpu版本,感觉有几个坑,网上的资料也比较乱,就想给大家留个比较完整安装和排坑的文档. 我的gpu是gtx 960m 1.安装驱动 没有安装驱动应该是选择x serv ...
最新文章
- 逻辑模型三要素-完整性约束
- UVALive5379 UVA270 Lining Up
- 在线使用Octave、Matlab画单电荷等位线和电力线、matlab的nonconformant arguments错误
- 用Tableau画可调整的树状图(Tree Diagram)
- php mysql 查询 区分大小写_MySQL查询字符串时区分大小写
- iOS中POST请求
- 基于Tablestore的Wifi设备监管系统架构实现
- Mybatis generator(复制粘贴完成)
- vscode中文支持xp_VSCode (Visual Studio Code) V1.43.0下载并设置成中文语言的方法
- 安卓拍照上传php服务器,Android拍照上传至PHP服务器并写入MySql数据库(下)
- Hustoj mdui Web界面修改
- JavaScript中的关系运算符和逻辑运算符
- 新闻发布系统数据库设计
- Kafka安全认证授权配置
- bootmgr is missing
- 腾讯副总裁姚星离职创业!一手筹建AI Lab,张潼张正友都曾向他汇报
- 红米k50至尊版参数 红米k50至尊版评测值得买吗
- matlab读取声音文件
- 复杂网络研究中的SIR传播模型(Python实现)
- 解决mac excel中文乱码的问题
热门文章
- 关于自注意力机制的思考
- 如何在 Python 中使用 ggplot2?
- 牛!王军等喜提NBT:用AI在肠道超高效“挖”抗菌肽(附独家专访) | 热心肠日报...
- Cell:康奈尔大学郭春君组开发针对非模式肠道细菌的基因编辑工具
- FiM | 牧医所奶业创新团队建立瘤胃微生物脲酶的靶向宏蛋白质组方法
- 被鱼刺扎一下就没了条手臂?这种“吃人肉”的细菌身边并不罕见
- 3分和30分文章差距在哪里?
- R语言聚类分析--cluster, factoextra
- pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有工作日日期(business day)
- python代码判断指定日期是当前年的第多少天