关于OpenCV图像拼接的方法,如果不熟悉的话,可以先看看公众号整理的如下四篇文章介绍:
本篇文章是Stitcher类的扩展介绍,通过例程stitching_detailed.cpp的使用和参数介绍,帮助大家了解Stitcher类拼接的具体步骤和方法,先看看其内部的流程结构图(如下):
stitching_detailed.cpp目录如下,可以在自己安装的OpenCV目录下找到,笔者这里使用的OpenCV4.4版本,stitching_detailed.cpp具体源码如下目录,由于代码较多,这里不贴出来,大家找到位置自行查阅。
上面使用默认参数,详细输出信息如下:
E:\Practice\OpenCV\Algorithm_Summary\Image_Stitching\x64\Debug>05_Image_Stitch_Stitching_Detailed.exe ./imgs/boat1.jpg ./imgs/boat2.jpg ./imgs/boat3.jpg ./imgs/boat4.jpg ./imgs/boat5.jpg ./imgs/boat6.jpg
Finding features...
[ INFO:0] global C:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\ocl.cpp (891) cv::ocl::haveOpenCL Initialize OpenCL runtime...
Features in image #1: 500
[ INFO:0] global C:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\ocl.cpp (433) cv::ocl::OpenCLBinaryCacheConfigurator::OpenCLBinaryCacheConfigurator Successfully initialized OpenCL cache directory: C:\Users\A4080599\AppData\Local\Temp\opencv\4.4\opencl_cache\
[ INFO:0] global C:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\ocl.cpp (457) cv::ocl::OpenCLBinaryCacheConfigurator::prepareCacheDirectoryForContext Preparing OpenCL cache configuration for context: NVIDIA_Corporation--GeForce_GTX_1070--411_31
Features in image #2: 500
Features in image #3: 500
Features in image #4: 500
Features in image #5: 500
Features in image #6: 500
Finding features, time: 5.46377 sec
Pairwise matchingPairwise matching, time: 3.24159 sec
Initial camera intrinsics #1:
K:
[534.6674906996568, 0, 474.5;
0, 534.6674906996568, 316;
0, 0, 1]
R:
[0.91843718, -0.09762425, -1.1678253;
0.0034433089, 1.0835428, -0.025021957;
0.28152198, 0.16100603, 0.91920781]
Initial camera intrinsics #2:
K:
[534.6674906996568, 0, 474.5;
0, 534.6674906996568, 316;
0, 0, 1]
R:
[1.001171, -0.085758291, -0.64530683;
0.010103324, 1.0520245, -0.030576767;
0.15743911, 0.12035993, 1]
Initial camera intrinsics #3:
K:
[534.6674906996568, 0, 474.5;
0, 534.6674906996568, 316;
0, 0, 1]
R:
[1, 0, 0;
0, 1, 0;
0, 0, 1]
Initial camera intrinsics #4:
K:
[534.6674906996568, 0, 474.5;
0, 534.6674906996568, 316;
0, 0, 1]
R:
[0.8474561, 0.028589081, 0.75133896;
-0.0014587968, 0.92028928, 0.033205934;
-0.17483309, 0.018777205, 0.84592116]
Initial camera intrinsics #5:
K:
[534.6674906996568, 0, 474.5;
0, 534.6674906996568, 316;
0, 0, 1]
R:
[0.60283858, 0.069275051, 1.2121853;
-0.014153662, 0.85474133, 0.014057174;
-0.29529575, 0.053770453, 0.61932623]
Initial camera intrinsics #6:
K:
[534.6674906996568, 0, 474.5;
0, 534.6674906996568, 316;
0, 0, 1]
R:
[0.41477469, 0.075901195, 1.4396564;
-0.015423983, 0.82344943, 0.0061162044;
-0.35168326, 0.055747174, 0.42653102]
Camera #1:
K:
[1068.953598931666, 0, 474.5;
0, 1068.953598931666, 316;
0, 0, 1]
R:
[0.84266716, -0.010490002, -0.53833258;
0.004485324, 0.99991232, -0.01246338;
0.53841609, 0.0080878884, 0.84264034]
Camera #2:
K:
[1064.878323247434, 0, 474.5;
0, 1064.878323247434, 316;
0, 0, 1]
R:
[0.95117813, -0.015436338, -0.3082563;
0.01137107, 0.99982315, -0.014980057;
0.308433, 0.010743499, 0.95118535]
Camera #3:
K:
[1065.382193682081, 0, 474.5;
0, 1065.382193682081, 316;
0, 0, 1]
R:
[1, -1.6298145e-09, 0;
-1.5716068e-09, 1, 0;
0, 0, 1]
Camera #4:
K:
[1067.611537959627, 0, 474.5;
0, 1067.611537959627, 316;
0, 0, 1]
R:
[0.91316396, -7.9067249e-06, 0.40759254;
-0.0075879274, 0.99982637, 0.017019274;
-0.4075219, -0.018634165, 0.91300529]
Camera #5:
K:
[1080.708135180496, 0, 474.5;
0, 1080.708135180496, 316;
0, 0, 1]
R:
[0.70923853, 0.0025724203, 0.70496398;
-0.0098195076, 0.99993235, 0.0062302947;
-0.70490021, -0.01134116, 0.70921582]
Camera #6:
K:
[1080.90412660159, 0, 474.5;
0, 1080.90412660159, 316;
0, 0, 1]
R:
[0.49985889, 3.5938341e-05, 0.86610687;
-0.00682831, 0.99996907, 0.0038993564;
-0.86607999, -0.0078631733, 0.49984369]
Warping images (auxiliary)...
Warping images, time: 0.0791121 sec
Compensating exposure...
Compensating exposure, time: 0.72288 sec
Finding seams...
Finding seams, time: 3.09237 sec
Compositing...
Compositing image #1
Multi-band blender, number of bands: 8
Compositing image #2
Compositing image #3
Compositing image #4
Compositing image #5
Compositing image #6
Compositing, time: 13.7766 sec
Finished, total time: 29.4535 sec
输入图像boat1.jpg、boat2.jpg、boat3.jpg、boat4.jpg、boat5.jpg、boat6.jpg如下(可以在OpenCV安装目录下找到D:\OpenCV4.4\opencv_extra-master\testdata\stitching)
结果图:
参数warp_type 设置为"plane",效果图如下:
参数warp_type 设置为"fisheye",效果图如下(旋转90°后):
其他的参数可以根据自己需要修改,如果要自己完成还需要详细了解拼接步骤再优化。更多OpenCV、Halcon等相关学习资讯请关注公众号:OpenCV与AI深度学习
本文分享自 OpenCV与AI深度学习 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!