首先本文假定你的电脑已经配置好了OpenCV3.2.0,并且想要在此基础上,添加opencv_contrib。在学习图像识别中的特征点检测和匹配时,需要用到一些常用的算法如FREAK、Surf和Sift算法等,但从OpenCV3以后,这些常用的算法OpenCV的Release版本中并不存在,因为他们是存放在opencv_contrib目录下面的未稳定功能模块,所以如果我们想要使用这些功能,需要自己下载代码并且自行编译。

首先需要有OpenCV的源码,可以通过在官网下载exe文件自动解压得到。本文章,OpenCV源码解压到E:/OpenCV/opencv/目录中。

1 下载OpenCV_contrib

前往https://github.com/opencv/opencv_contrib根据自己的OpenCV版本,下载对应的contrib。本文针对的是OpenCV3.2.0,因此,选择下载3.2.0版本即可。

本文将openCV_contrib放入到目录:E:\OpenCV\opencv_extra中。

2 下载CMake(GUI),并完成配置

前往https://cmake.org/download/下载最新版本的CMake,当前最新版本为cmake-3.9.0-win64-x64.msi。安装结束后,打开,在where is the source code中选择openCV的源代码目录:E:/OpenCV/opencv/sources。在where to build the binaries中选择编译为Visual Studio项目的目录,可以随意选择一个空目录,这里我选择了D:/VSProject。如下图所示:

点击Configure按钮后,弹出对话框,选择编译器,根据本地计算机的CPU架构,选择32位或64位编译。本文选择Win64.如下图:

接下来完成配置后,会出现红色区域,里面是键值对配置文件。找到OPENCV_EXTRA_MODULES_PATH项,填入opencv_contrib目录下的modules文件夹路径,即:E:\OpenCV\opencv_extra\modules,如下图所示。其他地方不要轻易改动,除非你理解具体含义,否则可能会带来很多意想不到的问题。

接下来,点击Generate按钮,生成VS项目。注意,生成的这个VS项目主要是用来编译生成我们需要的库。完成后如下图所示:

此时,在D:/VSProject目录中,生成了很多文件,我们打开OpenCV.sln文件即可。

注意,在配置和生成项目过程中,可能会因为网络原因,无法下载到protobuf-cpp-3.1.0.tar.gz文件,从而报错。可以自己前往https://github.com/google/protobuf/releases中找到对应版本下载后,放入到E:\OpenCV\opencv_extra\modules\dnn\3rdparty\protobuf目录中。或者放入E:\OpenCV\opencv_extra\modules\dnn\.download\bd5e3eed635a8d32e2b99658633815ef\v3.1.0目录中,其中一串很长的MD5码目录根据每个人的机器可能会不同。

3. 编译VS,生成库

打开VS项目后,在Debug模式下。在ALL_BUILD上 点击右键->生成。如下图所示。

完成编译后,Release模式下同理。此时,有了D:\VSProject\install目录。该目录包含了我们需要的头文件、库文件

4. 使用

使用很简单,在VC++目录下的包含目录中,将D:\VSProject\install\includeD:\VSProject\install\include\opencvD:\VSProject\install\include\opencv2加入。同时,在库目录中,将D:\VSProject\install\x64\vc15\lib加入。另外,如果需要,步骤1中的<opencv_home>/build/x64/vc14/lib也可以加入。

连接器》输入》附加依赖项中,根据需要,加入对应的库。但是opencv_world320d.lib是必须的。例如,为了使用FREAK算法,我还需要加入opencv_xfeatures2d320d.lib

OpenCV 3.2.0 + opencv_contrib+VS2017的更多相关文章

  1. 继《在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib》修订

    在之前的<在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib>中有些问题,后来由于时间不是很充足,故现在对其中的问题进行完善,如下所示对红色框框中的相应的 ...

  2. 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib

    为什么要CMake,这里我陈述自己的想法,作为一个刚使用opencv库的小白来说,有以下大概三点内容 1.由于在学习图像处理滤波器中,需要用到各种边缘保护滤波器(EPS)算法,但是这些算法在OpenC ...

  3. (一)在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 及一些问题

    一.准备工作: 1.下载OpenCV安装包:https://github.com/opencv/opencv 安装过程实际上就是解压过程,安装完成后得到(这里修改了文件名): 2.下载opencv_c ...

  4. 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 及一些问题

    一.准备工作: 1.下载OpenCV安装包:https://github.com/opencv/opencv 安装过程实际上就是解压过程,安装完成后得到(这里修改了文件名): 2.下载opencv_c ...

  5. Ubuntu 16.04下为Android编译OpenCV 3.2.0 Manager

    http://johnhany.net/2016/07/build-opencv-manager-for-android-on-ubuntu/ 最近想在Android上尝试一下SIFT和SURF匹配算 ...

  6. 在Jetson TX2上安装OpenCV(3.4.0)

    参考文章:How to Install OpenCV (3.4.0) on Jetson TX2 与参考文章大部分都是相似的,如果不习惯看英文,可以看看我下面的描述 在我们使用python3进行编程时 ...

  7. (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功

    (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 1.下载opencv 官网http://opencv.org/下载windows版Op ...

  8. visual studio 2015 Opencv 3.4.0配置

    因为想做AR方面,需要了解计算机视觉知识,决定从opencv开始入门,在网上买了本毛星云的<Opencv3编程入门>开始自学. 一.opencv 3.4.0下载安装 在官网http://o ...

  9. Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

    2017-2-23 Update: 修改并添加了部分细节 最近正在学习OpenCV ,为毕业设计做准备.Windows版本的OpenCV都默认提供对VS的支持,其在VS中的配置比较简单,网上也有大批教 ...

随机推荐

  1. PhotoSwipe中文API(五)

    Responsive Images PhotoSwipe不支持<图片>或srcset,因为它要求所定义的图像的尺寸,并使用延迟加载.但是,随着图像动态加载,它很容易切换人士透露,即便是在旧 ...

  2. cocos代码研究(9)ProgressTimer类学习笔记

    理论部分 ProgressTimer是Node的子类. 该类根据百分比来渲染显示内部的Sprite对象. 变化方向包括径向,水平或者垂直方向. 代码部分 Type getType () const获取 ...

  3. 【转】ViewPager 一屏显示多个子页面

    一.概述 项目中遇到一个需求:ViewPager 一屏显示多个子页面.因为之前没有做过这样的界面,所以经历了些许小插曲,特以记之! 主要内容来自: http://blog.csdn.net/JM_be ...

  4. 计算机bit是什么意思

    bit是计算机中数据的最小单位,即二进制位,数字0和1 一个字节是八位(8个0和1 或 1 组成的一串二进制) 一个字是16位,等于2个字节 用八位二进制表示的字符叫单字节字符, 用16位二进制数表示 ...

  5. 钉钉,连续获取Token一样么? Js_ticket重复获取一样么?

    经过测试,是一样的: Token的过期时间是2个小时: 2个小时后在获取则发生变化: js_ticket:  重复获取的值不同的:

  6. Python3.x:requests的用法

    Python3.x:requests的用法 1,requests 比 urllib.request 容错能力更强: 2,通常用法: (1).认证.状态码.header.编码.json r = requ ...

  7. 20189215《Linux内核原理与分析》第一周作业

    实验1 Linux系统简介 本节主要学习了 Linux 的历史,Linux 与 Windows 的区别等入门知识.通过学习,我明确了目的,是要用 Linux 来做程序开发.搭建服务器等:并且非常接受不 ...

  8. Hexo搭建 github.io 静态博客使用指南

    What? Hexo 是一个快速.简洁且高效的博客框架.可以使用markdown 解析成文章,在几秒内,即可利用靓丽的主题生成静态网页. Why? 笔记需要整理 How? github 创建 char ...

  9. Python3基础 raise + 指定类型异常+异常的解释 产生特定类型异常

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  10. Ubuntu16.04 远程访问RabbitMQ

    我们在虚拟机里面安装好RabbitMQ以后,虽然可以在虚拟机中访问,但是在主机端并不能访问 现在要解决这个问题 第一:账户 RabbitMQ为了安全性考虑,默认的guest账户只能在本地127.0.0 ...