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、接着安装官方给的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-4.0.0 Source code(zip)
https://github.com/opencv/opencv/releases
23
opencv_contrib-4.0.0
https://github.com/opencv/opencv_contrib/releases 4.0.0.zip
配置OpenCV
解压 两个压缩包,然后将 opencv_contrib-4.0.0 放到 opencv-4.0.0 里面,双击进入解压出来的opencv-4.0.0 文件夹,右键打开终端(或者在别处打开终端,通过输入cd opencv-4.0.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/opencv4 (安装成功后,这个文件夹下面是有东西的,如果没有东西,安装没成功)
生成makefile文件最后执行 make install时就会安装到这个目录,这里可以根据个人需求更改。
2)在OPENCV_EXTRA_MODULES_PATH处,选择输入目录
然后选择opencv_contrib-4.0.0 文件夹中的modules文件夹,注意,不是只选中opencv_contrib-4.0.0 文件夹就好了,需要选中里面的modules文件夹! 如下图所示,然后点Choose。
注:OPENCV_EXTRA_MODULES_PATH 是用来指定要编译的扩展模块,其中包括OpenCV_contrib模块。
3)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/opencv4/lib
3、接下来配置库:
sudo ldconfig
4、更改环境变量:
sudo gedit /etc/bash.bashrc
5、在文件后添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv4/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
set(CMAKE_CXX_FLAGS "-std=c++11")
cmake_minimum_required(VERSION 3.4)project( SURF_test )set(OpenCV_DIR "/home/zhangjun/SoftWare/opencv-4.0.0/build")find_package( OpenCV REQUIRED )add_executable( SURF_test surf_test.cpp )target_link_libraries( SURF_test ${OpenCV_LIBS} )
编译运行:
cmake .
make
./SURF_test
(gcc 版本 6.5.0)
ubuntu 16.0.4 opencv 4.0.0 + opencv_contrib 4.0.0 cmake-gui 安装相关推荐
- Ubuntu 16.04下opencv 3.4.11 的安装及使用示例
目录 一.安装Opencv 1.安装包 2.配置环境 二.使用示例----图片 三.使用示例----视频 1.虚拟机获取摄像机权限 2.播放视频 3. 录制视频 四.总结 五.参考内容 一.安装Ope ...
- 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,在安装前最好先更新一下系统,不 ...
- Ubuntu 16.04 64位中文版 配置 LAMP+phpMyAdmin PHP(7.0)开发环境
1.安装 Apache Web服务器. 终端:sudo apt-get install apache2 apache2-doc -y,然后测试是否安装成功. 浏览器地址栏输入:http://local ...
- 在Ubuntu 16.0.4.5 LTS上安装python 2.7版本的cv2模块
简介 OpenCV是一个C++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块. OpenCV有两个Python接口,老版本的cv模块使用OpenCV内置的数据类型,新版本的cv ...
- Visual Studio 2017环境cmake编译opencv 4.3.0+opencv_contrib 4.3.0(保证成功,保姆级教学,呕心沥血)
前言:为什么要装opencv_contrib opencv3的版本之后只包含基本内容,众多著名的检测算子(如SIFT.SURF和ORB等内容)因为版权问题转移到了一个名为xfeature2d的第三方库 ...
- openssl qt linux 安装,在Ubuntu 16.04.1上使用OpenSSL构建Qt失败
我花了一周的时间尝试在Ubuntu 16.04.1 x64上使用OpenSSL构建Qt5.8.0. 首先,我下载了OpenSSL v1.0.2k的源代码.然后我用命令配置它 ./Configure - ...
- 来自官方文档的Ubuntu 16.04 + tensorflow-GPU 配置
I Preprare for CUDA installation 官方文档:http://docs.nvidia.com/cuda/cuda-installation-guide-linux/ind ...
- 深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.
本节详细说明一下深度学习环境配置,Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 ...
- Ubuntu 16.04源码搭建ELK日志分析系统(Elasticsearch+Logstash+Kibana)
ELK环境 : 操作系统:Ubuntu 16.04 RAM:4GB CPU:2 注意 : 5.0版本之前可以在启动指令后跟:-Des.insecure.allow.root=true或者修改elast ...
- Ubuntu 16.04 安装好之后需要做的15件事
看到这篇文章说明你已经从老版本升级到 Ubuntu 16.04 或进行了全新安装,在安装好 Ubuntu 16.04 LTS 之后建议大家先做如下 15 件事.无论你是刚加入 Ubuntu 行列的新用 ...
最新文章
- MPB:湖南师大尹佳组-​乳酸菌益生菌表面粘附能力的检测
- 新发现为类脑计算机开辟了道路
- Nginx 的recv() failed 错误解决一例
- 初步解读Golang中的接口相关编写方法
- 修改sublime列编辑快捷键
- avalon框架,简单的MVVM
- WCF中的管道——管道类型
- opencv-api threshold
- 什么是软件测试中的黑天鹅
- Spring Boot 2.X 如何优雅的解决跨域问题?
- DP4 最小花费爬楼梯
- 联想打印机7256显示更换墨盒_联想打印机M7605D墨粉更换后还在提示更换墨粉盒...
- cmd下批量pingIP地址
- 微分方程和线性代数(分离变量法开始)
- sms 短信服务说明
- javaweb大全:地址来自 孤傲苍狼
- hive笔记(与上一偏 《hadoop集群搭建》结合)
- 获取微信用户openid
- Django的数据库创建、连接与迁移
- MODBUS通信协议代码
热门文章
- R语言-包的安装、载入及使用方法
- Python程序打包
- 子图同构问题与Ullmann Algorithm 算法(一)
- gpio引脚介绍 树莓派3b_使用微创联合M5S空气检测仪、树莓派3b+、prometheus、grafana实现空气质量持续监控告警WEB可视化...
- 如何用R进行单因素方差分析
- rust 手动关闭子线程_从零开始写 OS (9) —— 内核线程
- MPB:林科院袁志林组-​内生镰刀菌基因组染色体级别组装和注释
- “我付了钱,为何要说谢谢?”
- Nature Protocols:整合高通量组学数据集鉴定潜在机制联系的计算框架
- pandas将dataframe的索引转化为列表list数据(convert dataframe index into a list)