本文转载自OpenCV学校,主要介绍图像拼接拼接模块的算法流程和代码使用

拼接算法

OpenCV 2.4 . x版以后有了新的模型图像拼接,这个模块通过简单的高级API设置可以得到更好的图像拼接效果。OpenCV官方提供高度集成的API函数Stitcher,只用两行代码就能得到很好的马赛克图像。

Ptr<。订书机>。stitcher = Stitcher::create;

Stitcher::Status status = stitcher->stitch; 订书机::状态状态=订书机->;stitch;

第一行代码是创建拼接Stitcher的指针,第二行代码是调用拼接算法。

imgs表示的输入参数,是一系列Mat对象的vector。 pano表示的输出结果,是拼接之后的Mat对象

官方例子很有效,输入的图片如下:

拼接结果如下:

但是很多人开始按照官方的例子拼接自己的图像,就是各种坑掉,各种拼接都不产生效果。把两句代码叫成上面这么简单,几乎是做梦。其实这个API中有很多参数设置,官方演示中没有详细说明。拼接拼接算法流程图如下:

可以看出,图像拼接是一个非常复杂的算法,由一系列基本算法组成。如果不太了解这些基本算法,实际上很难实现自己的图像拼接。其中,影响拼接算法拼接工作的最常见算法子模块有:

特征发现与描述子 常见的特征可以选择SIFT、SURF、AKAZE、ORB等特征算子进行匹配 相机参数 不同的相机参数与设置会导致不同的结果 融合方式 不同的融合方式,也会导致不同结果 各种阈值设置,特别是config threshold,如果无法特征匹配,记得把这个阈值调小点

其他参数如何设置可以参考OpenCV的官方文档。简而言之,如果不能拼接,可以调整参数。一般最后你都会拼接成功。另外算法比较慢,但是支持GPU执行,可以试试如何在GPU下实时执行。这里没试过。谁尝试过都可以分享消息,我负责设置顶。

代码演示

此外,拼接时可以设置不同的warper,这会对拼接后的图像产生不同的效果。常见影响包括

鱼眼相机 环视 默认

插图如下:

演示代码如下:

#include<。opencv2/opencv.hpp>。

#include<。iostream>。

使用usingnamespacecv

使用命名空间TD;

intmain{

vector<。string>。文件;

glob;

vector<。Mat>。图像;

for {

printf;

images . push _ back;

}

//设置拼接模式和参数

Mat result1,result2,result3

装订机::模式=装订机::全景;

Ptr<。订书机>。stitcher = Stitcher::create;

//拼接法——多通道融合

auto blend = detail::Blender::create default;

订书机->setBlender;

//拼接

订书机::状态状态=订书机->;缝合;

//平面翘曲拼接

autoplane _ warper = makePtr & ltcv::PlaneWarper >中。;

订书机->setWarper;

status = stitcher->缝合;

//鱼眼拼接

autofisheye _ warper = makePtr & ltcv::Fisheyewarper & gt;;

订书机->setWarper;

status = stitcher->缝合;

//检查退货

if

{

cout<。& lt"无法缝合图像,错误代码= " & lt& ltint& lt;& ltendl

returnEXIT _ FAILURE

}

imwrite;

imwrite;

imwrite;

WaitKey;

返回0;

}

注意:一起跑步慢!真是慢!

欢迎加入微信官方账号的读者与同行交流。目前有SLAM、算法竞赛、图像检测与分割、人脸、医学成像、计算摄影、自动驾驶、综合等微信群。请扫描以下微信号添加群组。备注:“昵称+学校/公司+研究方向”,例如:“张三+上海交大+视觉SLAM”。请按格式注明,否则不予通过。添加成功后,会根据研究方向邀请其进入相关微信群。请不要在群里发广告,否则会出群里,谢谢理解~

1.《图像拼接 实战 | OpenCV 实现多张图像拼接》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《图像拼接 实战 | OpenCV 实现多张图像拼接》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1737373.html