最近一个项目需要涉及到图像拼接算法,网上了解一番,也大致有思路:
1. 利用surf算法查找特征点
2. 过滤掉一些,获取good点
3. 然后进行配准(图像扭曲),对接
4. 形成最终拼接图片
这些工作,最简单也是最快捷的方式就是opencv
于是就开始研究opencv,windows版本可以直接在官网上下载,也可以在国内一些镜像网站上下载,这里需要注意,如果直接msi版本的话,是不支持surf算法。拼接的时候,需要surf,因此需要自己手动编译一个库出来。
下面就是本人的编译opencv的一些经历
1、准备工作
经过多次反复试验,准备工作还是需要的,网上很多文章都有描述,但总是有点缺少点什么。
CMake | 需要安装 | 需要这个配置config |
gcc | 也需要安装一个 | |
VS2017或2020之类 | 也要安装好 并且要重启下,支持windows c++各种组件 安装后,需要重启电脑 | 需要这个工具编译 |
为了避免后续麻烦,安装vs系列,参考如下连接:
解决方案-CMake error: error in configuration process, project files may be invalid(Windows&VS可参考)_cmd运行cmake..出错_翟天保Steven的博客-CSDN博客
应该倒过来操作比较好,先安装vs系列,然后再安装CMake。
如果,需要增加组件,双击安装包,然后选择 修改 ,这样就可以进行+-组件
2. 下载opencv
直接在官网也可以,一般速度较慢。建议自带梯子或高级办法(这个还是比较重要,因为后面编译的时候,还要下载一些,没有梯子的话,后面下载肯定会失败,导致最终失败)
opencv 源到可以通过以下方式下载:
OpenCV/opencv_contrib国内快速下载 | 绕云技术笔记
需要下载两个:opencv以及contrib,且需要版本一致
3. 编译opencv
网络上也有比较好的笔记,我也是主要参考笔记(谁叫他写的详细)
Win10 下编译 OpenCV 4.7.0详细全过程,包含xfeatures2d_NOAHCHAN1987的博客-CSDN博客
这里步骤一定要认真仔细的执行,否则会很奇怪,不要问我为什么
每个人情况,不太一样:
config之后,(理论上不能有红色字出现)
一定要打开 CMakeDownloadLog.txt 看下有没有哪些下载不成功的。
否则,虽然有些错误可以进行下一步,且貌似很顺利编译出最终lib的,但有问题的!!
我就碰到 ippicv 这个模块失败,没引起注意,实际demo的时候,还是发现surf没有装好(百思不得其解)
又从头搞了好几遍!!!好几遍!!!
通用解决办法:
IPPICV: Download failed: 6;“Couldn‘t resolve host name“_free_luojing的博客-CSDN博客
基本思路:由于国内连接无法下载,只能借助 GitHub Proxy 代理加速 进行下载,要一个个下载,速度比较快,麻烦是麻烦点
这里面还碰到一个疑惑:
在编译debug版本的时候,会出现失败
具体原因vs限制了,暴力解决办法,就是关闭这个限制(这样不能调试opencv库里代码)
选择 opencv_world 点击右键或菜单 - 项目 - 属性
再,点击 右键 - 仅用于项目 - 仅生成 open_world ;先编译这个库,编译成功后,再生成ALL_BUILD 再生成 INSTALL
这样才能保证debug版本编译成功,否则debug版本是编译失败的
4. 最后是验证
如果以下代码:
Ptr<SURF> Detector = SURF::create(2000); 没有崩溃,说明是安装好了
补充下:
Qt 上:需要添加 外部库,把库添加进来,
并且增加一个include的引用
INCLUDEPATH += xxxx/build/include