在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib

为什么要CMake,这里我陈述自己的想法,作为一个刚使用opencv库的小白来说,有以下大概三点内容

1.由于在学习图像处理滤波器中,需要用到各种边缘保护滤波器(EPS)算法,但是这些算法在OpenCV 3.1.0的Release版本中存在很少,因为他们把大量的算法存放在opencv_contrib目录下面的未稳定功能模块里的ximgproc文件夹下,所以如果我们想要使用这个目录的功能,就需要自己重新进行OpenCV的编译。

2.由于现在官方的opencv3.1.0要在x64上使用,而且在visual studio2013包括本身以后的平台上使用,怎么让其在以前的版本使用,也可以在x86机子上跑呢?这也就是要CMake的原因之一。

3.因为opencv是开源库,需要看到源码,了解里面的算法是如何实现的也要CMake,就能看到了......

说了那么多,CMake会很难吗?我试验过一两次都成功过,确切的回答不会太难,以下是具体准备工作和步骤

一、准备工作:

1.下载OpenCV安装包:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download

安装过程实际上就是解压过程,安装完成后得到(这里修改了文件名):

2.下载opencv_contrib源码:https://github.com/Itseez/opencv_contrib

下载之后直接解压,得到源码目录:

3.下载cmake-gui工具:http://www.cmake.org/cmake/resources/software.html

选择不安装版的,根据自己的机型选择X86或者X64,下载完成后,直接解压即可使用,不必安装。

由于下载慢的原因,不能一步步截图,以下将采用下面用到相关链接第一个。在相关链接的基础上进行增加自己的一点见解,和遇到的问题,以及处理

二、使用cmake生成OpenCV.sln:

1.打开cmake-gui\bin目录下的cmake-gui.exe工具:

2.填写相应参数,包括:OpenCV源码目录和OpenCV.sln工程的导出目录,开始导出OpenCV.sln工程:

第一次导出时需要设置后面用来编译此OpenCV.sln工程的VS的版本(这里特别要注意的是,自己机器上是否装有相应的VS版本,如果没有装,还是要编译就会出错,可能是找不到对应的工具原因,以及选择X86和X64),这里用的是VS 2015,也可以选择Visual Studio 10,就能在VS2010上使用:

设置完成之后点击“Generate”开始生成工程:

3.第一次编译完成之后,我们需要将额外的opencv_contrib加到工程中进行第二次编译,在配置表中找到“OPENCV_EXTRA_MODULES_PATH”,设置其参数值为open_contrib源码包中的modles目录,我的目录是“E:\OpenCV\tools\opencv_contrib-master\modules”:

设置完成之后点击Configure进行配置,不报错的话就进行第二次编译:

第二次编译一般很快就能完成:

编译完成后,我们在资源管理器下查看上面设置的文件输出目录,发现目录下多出了很多文件,其实就是OpenCV.sln工程文件:

三、用VS打开OpenCV.sln工程,编译生成Debug和Release库:

1.用VS 2015打开OpenCV.sln工程,在解决方案中可以查看工程目录:

2.编译生成debug版本的库,记得在此之前要选择编译的平台信息,这就是编译生成debug版本和release版本的区别,也可以选择release,因为自己的工程可能要用到相应的动态链接库:

在解决方案中选中工程,右键选择重新生成解决方案:

3.找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”-->“仅生成INSTALL”:

然后,在工程目录下的install目录中,可以看到生成了一堆文件,这堆文件是不是和最上面的截图很相近:

四、把新的库文件配置到到项目中:

  1. VC++目录-->包含目录,添加:
    D:\opencv3\opencv\mybuild\install\include

  2. VC++目录-->库目录,添加:
    D:\opencv3\opencv\mybuild\install\x86\vc12\lib
    D:\opencv3\opencv\mybuild\install\x86\vc12\staticlib

  3. 链接器-->输入-->附加依赖项,添加: (下面添加的release的版本,注意添加的库与编译选项要一致,需要注意debug比release的文件名多了个d)

opencv_aruco310.lib
opencv_bgsegm310.lib
opencv_bioinspired310.lib
opencv_calib3d310.lib
opencv_ccalib310.lib
opencv_core310.lib
opencv_datasets310.lib
opencv_dnn310.lib
opencv_dpm310.lib
opencv_face310.lib
opencv_features2d310.lib
opencv_flann310.lib
opencv_fuzzy310.lib
opencv_highgui310.lib
opencv_imgcodecs310.lib
opencv_imgproc310.lib
opencv_line_descriptor310.lib
opencv_ml310.lib
opencv_objdetect310.lib
opencv_optflow310.lib
opencv_photo310.lib
opencv_plot310.lib
opencv_reg310.lib
opencv_rgbd310.lib
opencv_saliency310.lib
opencv_shape310.lib
opencv_stereo310.lib
opencv_stitching310.lib
opencv_structured_light310.lib
opencv_superres310.lib
opencv_surface_matching310.lib
opencv_text310.lib
opencv_tracking310.lib
opencv_ts310.lib
opencv_video310.lib
opencv_videoio310.lib
opencv_videostab310.lib
opencv_xfeatures2d310.lib
opencv_ximgproc310.lib
opencv_xobjdetect310.lib
opencv_xphoto310.lib
ippicvmt.lib

4、关于imread的问题。如果图片名称是存在txt文档中,用readImageLists方法提取到list列表时,要特别注意txt文档的换行符必须是“UNIX 终束符 -LF"。否则读取到的文件名会多出"\r"字符,导致读取图像文件失败。

相关链接:http://blog.csdn.net/linshuhe1/article/details/51221015

相关链接:http://www.cnblogs.com/asmer-stone/p/5530868.html

相关链接:http://www.yidongtime.com/Html/dev/web/20160305/55517.html

5、补充的内容:http://www.cnblogs.com/jliangqiu2016/p/6372914.html

Windows下编译扩展OpenCV 3.1.0 + opencv_contrib相关推荐

  1. Windows下编译OpenCV+opencv_contrib

    文章目录 前言 一.写在前面重要的事 二.正文 1.安装步骤 2.编译及配置 总结 前言 在学习OpenCV特征检测与匹配时,因为OpenCV3.x版本将SIFT.SURF.ORB算子等的源代码从官方 ...

  2. 实战Windows下编译Opencc 1.0.5

    Opencc是中文简繁转换开源项目,支持词汇级别的转换.异体字转换和地区习惯用词转换(中国大陆.台湾.香港). 特点 严格区分「一简对多繁」和「一简对多异」. 完全兼容异体字,可以实现动态替换. 严格 ...

  3. windows下基于libtorch的yolov5 6.0的c++部署

    windows下基于libtorch的yolov5 6.0的c++部署 1.概述 libtorch是pytorch的C++版本,在需要多进程.提高推理速度等需求下会比python语言更具有优势.本文根 ...

  4. C++ Boost库:windows下编译Boost库

    文章目录 1. 需要编译的boost库 2. 编译步骤 3. 库命名规则 4. VS配置库目录 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cast C ...

  5. Linux及Windows下编译exosip和osip2源码

    eXosip库及编译流程简介 1.eXosip库的简介 1.1.osip简介 osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层 ...

  6. Windows下编译Chrome V8

    主要还是参考google的官方文档: How to Download and Build V8 Building on Windows 同时也参考了一些其它的中文博客: 脚本引擎小pk:SpiderM ...

  7. Windows下编译 Hadoop

    Windows下编译 Hadoop-2.9.2 系统环境 系统: Windows 10 10.0_x64 maven: Apache Maven 3.6.0 jdk: jdk_1.8.0_201 Pr ...

  8. Windows下编译tensorflow-gpu教程

    这两个也要看: https://zhuanlan.zhihu.com/p/29029860 https://zhuanlan.zhihu.com/p/34942873 Windows下编译tensor ...

  9. Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序

    参考:https://www.cnblogs.com/jliangqiu2016/p/7642471.html Windows下编译TensorFlow1.3 C++ library及创建一个简单的T ...

最新文章

  1. 第一个PhoneGap程序以及错误解决
  2. linux phpinfo mysql_linux服务器 phpinfo 里面找不到 mysql 模块,也没有 pdo_mysql
  3. 从零开始-android 4.2之旅
  4. python ctypes 回调函数_Python ctypes中具有自定义类型的回调
  5. jzoj3302-[集训队互测2013]供电网络【上下界网络流,费用流,动态加边】
  6. 被400万人痛骂!在中国火了22年的“洋网红”,套路彻底失灵了?
  7. vue中如何实现用JavaScript调用函数的方式使用一个通用的通知组件
  8. 10 行代码玩转弹性调度的小把戏
  9. 批处理 备份网络数据
  10. ATL WTL 实现分析(四)
  11. Linq to Oracle 使用教程目录
  12. vue 为全局变量赋值_在vue项目中 如何定义全局变量 全局函数
  13. 数据库索引类型介绍及其优缺点、区别、适用场景
  14. IP地址和mac地址的区别
  15. 对“陶哲轩-来自特征值的特征向量”的理解
  16. 我在Blue Nile(蓝色尼罗河)上通过python爬取一百万颗钻石,最终选出心仪的一颗
  17. JavaScript 中的事件类型2(读书笔记思维导图)
  18. [转载]通过 call gate 访问目标 code segment
  19. win7 正在锁定计算机 卡住,win7关机关不掉怎么办_win7一直卡在关机的解决办法
  20. Document base XXXXX\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\hr does not

热门文章

  1. 麦克纳姆轮全向移动机器人运动模型及应用分析
  2. 谷歌放弃go_盘点国内可以使用的十种谷歌服务
  3. 792. 高精度减法
  4. 力扣——在排序数组中查找元素的第一个和最后一个位置
  5. Maven配置文件无法被导出或者生效的问题【已解决】
  6. 实验2-2-4 计算分段函数[2] (10 分)
  7. visionpro 窗口显示文字
  8. CSS3实现卡片翻转动画
  9. mpvue中小程序自定义导航组件开发指南
  10. 我们能用RNN写策略吗?