1.OpenCV2源码安装

安装依赖项

sudo apt-get install build-essential  //build-essential是c语言的开发包,包含了gcc make gdb和libc函数库
sudo apt-get install cmake git libgtk2.-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev //安装cmake git等依赖项
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394--dev

下载源码

https://opencv.org/releases/page/4/

解压源码

mkdir build //在opencv2.4.13新建build文件夹
cd build
cmake .. //用来生成makefile文件
make //makefile文件调用编译器
sudo make install //安装opencv在默认位置,usr/local/ bin、lib、include 存放文件

查看安装的版本

pkg-config opencv --modversion

2.OpenCV3和contrib源码安装

下载源码(两个的版本需要保证一样),解压

https://github.com/opencv

安装Cmake-gui // cmake图像化界面,方便操作,并不是必须的

sudo apt-get install camke-qt-gui
mkdir build
cd build
cmake-gui \\不用gui,可以写修改cmakew文件 或者 指定参数,但我觉得这样都不太方便
点击configure 现实configure done 后 generate 等待 generate done

网络原因:IPPICV下载失败,可以提前下载好,地址:

https://raw.githubusercontent.com/opencv/opencv_3rdparty/bdb7bb85f34a8cb0d35e40a81f58da431aa1557a/ippicv/ippicv_2017u3_lnx_intel64_general_20180518.tgz

打开,/home/zsm/source/opencv-4.0.0/3rdparty/ippicv下的 ippicv.cmake,将下面地址 修改为刚才保存的地址

例如:

"file:/home/lxd/source/
     

不打开nonfree开关,会导致:

OpenCV(3.4.3) /home/lxd/OperCV3.4/opencv-3.4.3/opencv_contrib-3.4.3/modules/xfeatures2d/src/sift.cpp:1205: error:The function/feature is not implemented

make
sudo make install

3.测试

#include <iostream>
#include <opencv2/opencv.hpp> //头文件
#include <opencv2/xfeatures2d.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.png");
Mat img_2 = imread("2.png");
//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);
//绘制匹配出的关键点
Mat img_matches;
drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_matches);
imshow("【match图】", img_matches);
//等待任意按键按下
waitKey();
}

重要:

OpenCV版本的切换:关键文件:OpenCVConfig.cmake。在opencv编译好后,所在目录中一般会有一个叫OpenCVConfig.cmake的文件,在安装目录里面

这个文件中指定了CMake要去哪里找OpenCV,其.h文件在哪里等,比如其中一行:

在find_package前面加上一句set,如下:

如果要用原来的opencv2,删掉这一句,只需find_package

cmake_minimum_required(VERSION 2.8)

set(OpenCV_DIR "/usr/opencv3.4/share/OpenCV")

find_package(OpenCV REQUIRED)
include_directories(${OPenCV_INCLUDE_DIRS})
add_executable(opencvInstallTest opencv3-4Test.cpp)
target_link_libraries(opencvInstallTest ${OpenCV_LIBS})

请仔细阅读!有问题评论。

最新文章

  1. uboot补丁的使用
  2. quick3.5 removeFromParent()导致的windows下模拟器崩溃问题
  3. 基于percona 5.7的xtrabackup实践
  4. android:descendantFocusability=”blocksDescendants”的用法
  5. 学员信息录入(StuInfoManager) 用分层实现(既MySchool后的一个案例)
  6. TP框架基础
  7. crontab(linux下定时执行任务命令)
  8. Java中==与equals()的区别
  9. springboot2.1.3集成单节点elasticsearch6.4.0
  10. php把一些预定义的 HTML 实体转换为字符。
  11. mysql时间日期操作
  12. BZOJ1785[USACO 2010 Jan Gold 3.Cow Telephones]——贪心
  13. 软件测试常用Linux命令
  14. Java并发编程总结5——ThreadPoolExecutor
  15. 08: 查看Linux系统基本信息和硬盘CPU等
  16. winform程序打包成exe文件
  17. 树莓派3b无驱动打印
  18. golang interface 类型变量当作某个具体类型使用
  19. 常用数学函数篇abs acos asin atan ceil cos exp frexp ldexp log pow sin sinh sqrt tan tanh
  20. jquery position方法使用及兼容性

热门文章

  1. dedecms织梦调用二级和三级分类标签
  2. ASP.NET 中 取得 Repeater 里的checkbox值
  3. mac中登陆mysql忘记密码解决办法
  4. gdb命令小结
  5. Linux系统无法启动故障解决方案
  6. mysql笔记——索引
  7. windows下查看C语言字符数组(俗称:字符串)在内存中地址信息的操作过程
  8. 在vue组件中使用vuex的state状态对象的5种方式
  9. 6407. 【NOIP2019模拟11.05】小 D 与随机
  10. js中[]、{}、()区别