由于知识产权的原因,OpenCV将很多算法放到了opencv_contrib中,在github上,这两块代码就是分别放在不同的repository中的,SURF和SIFT特征检测也在此扩展中所以我们需要对OpenCV原有的dll重新进行配置

针对OpenCV4.1.2版本,我们需要以下材料:

 1. opencv-4.1.2版本(必须是源代码文件) 2. opencv_contrib-4.1.2版本(最好是与opencv同版本)3. cmake-3.17.3版本(此版本适配了VS2019)4. visualstudio2019版本(本人是Win10操作系统)5. 通畅的网络(最好接入VPN)

上述材料下载链接及其注意事项

下载之前在D盘新建一个名为opencv的文件夹存放材料

1.opencv-4.1.2版本
https://github.com/opencv/opencv/releases/tag/4.1.2
一定要下载 源代码(压缩)

2.opencv_contrib-4.1.2*
https://github.com/opencv/opencv_contrib/releases
3.cmake-3.17.3
https://cmake.org/download/


安装cmake记得勾选在桌面创建图标选项 否则找程序入口很麻烦

以上材料保存路径全部为D/opencv即之前新建的 文件夹

确认材料齐全之后,在D/opencv这个文件中新建一个名为build的空文件夹 用来存放在cmake中重新配置原有的opencv下的sources


然后就可以开始.在cmake中重新配置原有的opencv下的sources,保存在新建目录build
1.选择路径


Where is the source code是opencv源码路径,即“源路径”
为opencv4.1.2源代码文件夹的位置

Where to build the binaries是要生成opencv的vs工程路径,即“目的路径”
为新建的空文件夹build的路径
2.点击configure进行配置

用的别人的图
第一个选项需要选择 Visual Studio 16 2019
第二个选项需要选择 X64 (不进行选择的话默认为X64)
第三个选项需要选择 默认第一个
选择完之后点击Finsh进行第一次configure

第一次Configure结束后呈现为全红色 需要再点击一次Configure变为白色
全变白了,说明没问题了,这是需要做两项改动
第一项 勾选…NONFREE选项
第二项 OPENCV_EXTRA_MODULES_PATH选项中,填写opencv_contrib解压目录下,modules文件夹的路径,这样就把opencv_contrib编译进去了

然后再按Configure进行配置,和前面一样,一次红,二次白,不在赘述了。第二次全白了,就可以按Generate按键,生成vs工程文件了

不过!!


要留意在cmake窗口中不能有红色的提示信息!这表示有某些.dll和.i类文件未能成功经cmake下载! (原因是有些文件需要连接外网下载)
不要慌 先看提示信息

错误报告里给出了Cmake下载日志的路径,依照此路径顺藤摸瓜即可
修得正果(以自己提示的路径为准)

这几个错误是类似的就是Download failed,那只能手动下载了,所以你现在应该最好能有个能上谷歌的Chrome浏览器给手动下载做准备

仔细看错误信息,可以打开download log file看看,如提示,我的在D:/Kits/OpenCV/opencv-source/opencv-3.4.1/build/CMakeDownloadLog.txt 打开可以看到如下内容:

关键词-do copy

do_copy "opencv_ffmpeg.dll" "b8120c07962d591e2e9071a1bf566fd0" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/0a0e88972a7ea97708378d0488a65f83e7cc5e69/ffmpeg/opencv_ffmpeg.dll" "D:/Kits/OpenCV/opencv-source/opencv-3.4.1/build/3rdparty/ffmpeg"
#missing "D:/Kits/OpenCV/opencv-source/opencv-3.4.1/build/3rdparty/ffmpeg/opencv_ffmpeg.dll"
#cmake_download "D:/Kits/OpenCV/opencv-source/opencv-3.4.1/.cache/ffmpeg/b8120c07962d591e2e9071a1bf566fd0-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/0a0e88972a7ea97708378d0488a65f83e7cc5e69/ffmpeg/opencv_ffmpeg.dll"

其中 “opencv_ffmpeg.dll” 是少的文件的名字
b8120c07962d591e2e9071a1bf566fd0是此文件的MD值

每一个错误都对应这样两个地址
D:/Kits/OpenCV/opencv-source/opencv-3.4.1/build/3rdparty/ffmpeg

D:/Kits/OpenCV/opencv-source/opencv-3.4.1/.cache/ffmpeg/b8120c07962d591e2e9071a1bf566fd0-opencv_ffmpeg.dll"
找到这两个路径并确保这两条路径内都有在外网下载好的.dll或.i文件
如果在给出的地址里发现0kb的同名文件 说明需要把这个0kb的下载失败的文件用再外网下载好的有效文件替换掉

一个网址https://raw.githubusercontent.com/opencv/opencv_3rdparty/0a0e88972a7ea97708378d0488a65f83e7cc5e69/ffmpeg/opencv_ffmpeg.dll
复制这个网址到能上外网的chrome浏览器 如果网址正确chrome浏览器会自行下载文件


不要管已删除 将下载的每一个缺失的文件按照提示的路径一个个放入相对应的路径 如果按照路径找不到文件夹 就建立一个和路径完全一致的新文件夹

每完成一个缺失文件的替换 就configure一次 直到cmake下方红色的报错提示完全消失 如果按照路径安装CMakeDownloadLog.txt中仍有
此文件报错的信息 则是替换时文件名的问题或者检查有没有多出多余的替换文件
文件名有
直接文件名 opencv_ffmpeg.dll

MD值-直接文件名
b8120c07962d591e2e9071a1bf566fd0-opencv_ffmpeg.dll
均可尝试

等到Cmake界面全部为白色 说明文件都下载完毕了 此时按下Cmake中的Genrate键 生成vs工程文件

3.用VS2015编译opencv源代码
生成工程完毕,在刚才说的“目的路径build文件”下,可以看到OpenCV工程文件

双击编译生成的文件夹下的OpenCV.sln文件
找到CMakeTargets–右击INSTALL–点击生成,等待完成,然后关闭VS

如果install注入顺利 应该是没有失败的提示的 如果有失败的提示
就歇逼了 只能重新来过

4.点击Debugx64–更改项目属性表
更改VC++目录




更改链接器-输入-附加依赖项目录

附加依赖项中都是新增的.lib扩展模块文件

把这些文件名通过批量提取到txt中再将后缀为.lib的文件名放入附加依赖项
如何批量提取文件名?
https://jingyan.baidu.com/article/5553fa82a5d99f65a239343d.html

至此VS中的属性表设置完毕

5.开始设置新的系统环境变量Path


至此 如果你欧神附体 你应该完成了全部的配置过程 可以使用你心爱的扩展模块进行编译了!!

使用SURF特征检测进行验证

完成!两天两夜啊 太难搞了 希望能帮到各位!

呕心沥血!open cv4.1.2添加contrib4.1.2扩展模块相关推荐

  1. windows 环境下,编译android 版opencv-4.5.5,并添加opencv_contrib-4.5.5 扩展模块

    参考博客:(130条消息) windows10 vs2019 版本:cmake将 opencv_contrib-4.5.5 扩展模块编译添加到 opencv-4.5.5 正式版中_Chhjnavy的博 ...

  2. 没有php5.sowenjian_(转)LINUX下PHP编译添加相应的动态扩展模块so(不需要重新编译PHP,以openssl.so为例...

    原文链接 http://php.net/downloads.php (相应PHP版本下载),例如我下载的PHP版本是php-5.6.6 1.首先确定LINUX下已安装的PHP版本,因为不同PHP版本对 ...

  3. 转)使用C/C++扩展Python

    转)使用C/C++扩展Python 分类: c++ c python 2009-12-02 14:50 1231人阅读 评论(0) 收藏 举报 扩展pythonnullsystemapicommand ...

  4. php /usr/lib/libjpeg.so.62,linux PHP的装配

    linux PHP的安装 2. 红帽Linux PHP 2.1. 安装linux PHP 查看系统是否自带了php,若自带先卸载,否则安装后会出错. (1)下载php源文件php-5.3.6.tar. ...

  5. SQLite 3.31.0 发布,世界上使用量最大的数据库引擎

    SQLite 是一个 C 实现的 SQL 数据库引擎,它的特点是小型.快速.自包含.高可靠性和功能齐全.SQLite 嵌入在所有手机和大多数计算机中,也捆绑在为数众多的其它应用中,是世界上使用量最大的 ...

  6. python字符串无效的原因_Python(60)扩展和嵌入1.使用 C 或 C++ 扩展 Python

    1. 使用 C 或 C++ 扩展 Python 如果你会用 C,添加新的 Python 内置模块会很简单.以下两件不能用 Python 直接做的事,可以通过 extension modules 来实现 ...

  7. 5.4php-fpm配置,CentOS5.4下配置Nginx0.8.33+PHP5.3+PHP-fpm+MySQL5.5

    一.CentOS准备工作. # 更新所有已安装软件包 yum -y update # 安装必要的开发工具 yum -y install gcc gcc-c++ autoconf make libjpe ...

  8. python扩展c教程_使用C/C++扩展Python

    如果你会用C,实现Python嵌入模块很简单.利用扩展模块可做很多Python不方便做的事情,他们可以直接调用C库和系统调用. 为了支持扩展,Python API定义了一系列函数.宏和变量,提供了对P ...

  9. 【ArcGIS|空间分析】空间分析准备流程

    文章目录 空间分析准备 创建模型准备 养成良好的习惯! 空间分析准备 1. 启动ArcMap,连接文件夹副本.(数据要备份) 2. 新建文件地理数据库. 3. 设置工作空间.(当时工作空间和临时工作空 ...

最新文章

  1. ggplot2笔记3:工具箱——误差线、加权数、展示数据分布
  2. KVM虚拟机安装管理——qemu-kvm方式
  3. 理解浏览器允许的并发请求资源数
  4. Majority Element
  5. 1.8 小飞的电梯调度算法
  6. androd之绘制文本(FontMetrics)
  7. python磁盘io_python监控磁盘io
  8. linux搜索pdf文件,桌面应用|如何使用 pdfgrep 从终端搜索 PDF 文件
  9. python循环for...in_python循环while和forin实例
  10. 少儿是先学计算机 还是学机器人,机器人学习和少儿编程有什么区别?
  11. 电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号)...
  12. Linux centos6 命令行配置网络连接
  13. 司空见惯 - 会议室名称
  14. 盘点 7 个超级 Nice 的微信小程序项目
  15. CSAPP家庭作业答案7 8 9章
  16. 超全!体验度量理论2021版
  17. 滤波器主要参数及特性
  18. 使用 OpenStreetMap 数据搭建离线地图服务
  19. Rust语言Ownership,Reference和Lifetime详解
  20. 人工智能专业计算机毕业设计选题推荐

热门文章

  1. 全志F1C100s主线linux入坑记录 (1)linux系统移植
  2. 【java】Deepin 解决JDK出现Picked up _JAVA_OPTIONS: -awt.useSystemAAFontSettings=gasp的问题
  3. 如何点击验证码刷新验证码的问题解决方法?
  4. 一个可以在线编写matlab的网站,你了解吗?
  5. C语言及ARM中堆栈指针SP设置的理解与总结
  6. Eigen学习3:矩阵及向量运算
  7. 2019中国IT上市公司50强
  8. 解读教育大数据的文化意蕴
  9. 用样本推断整体,中心极限定理及其一些前提条件
  10. 人脸识别: 人脸数据集大全