Opencv项目实战|Opencv项目实战(04 全景图片拼接)

1,效果展示 首先,需要拍摄像这种的图片(当然,大家用我这的就可以了,我实在是太了解大家了)。
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片


接下来,我们来看看拼接的效果图:

效果非常的棒,那我们再来看看,不同大小的图片的拼接效果
除了缺失的角,其他的都还好说,本来也在我的意料之中,如果还能实现自动补齐,那我肯定会大呼一声:“厉害!!”
2,项目准备 (1)文件夹
在pycharm项目中,请向我一样按照如图下所示创建。
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片

我们只需要一个放置不同图片的文件夹和一个.py文件,注意照片一定不能放乱了,在结尾处我会附上素材。
(2)熟悉一下os
当然,此项目我们只需要一个函数,学久必有忘。

os.listdir(path)#返回path指定的文件夹包含的文件或文件夹的名字的列表。


3,代码展示与讲解
import cv2 import osmainFolder = 'Images' myFolders = os.listdir(mainFolder)#读取主文件 print(myFolders)for folder in myFolders: path = mainFolder +'/'+folder images =[] myList = os.listdir(path) print(f'Total number of images detected {len(myList)}') for imgN in myList: curImg = cv2.imread(f'{path}/{imgN}') curImg = cv2.resize(curImg,(0,0),None,0.2,0.2) images.append(curImg)stitcher = cv2.Stitcher.create() (status,result) = stitcher.stitch(images) if (status == cv2.STITCHER_OK): print('Panorama Generated') cv2.imshow(folder,result) cv2.waitKey(1) else: print('Panorama Generation Unsuccessful')cv2.waitKey(0)

老规矩,还是看我分析讲解代码,再去看代码敲一遍。
  • 首先,我们将图片是放在了Image文件,那么它就是我们的主文件夹,使用os.listdir(path)函数,他会返回一个包含了此路径下的列表如下所示:
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片


  • 其次,我们已经知道在Images文件夹下有两个文件,此时需要对其进行遍历,读取我们的图片,还是用os.listdir(path)函数,但此时我们的路径需要更改了,path=Images/1, Images/2,成功读取后,将图片放入列表当中,并通过打印查看是否将所有的图片读取完。
【Opencv项目实战|Opencv项目实战(04 全景图片拼接)】
  • 除此之外,我们需要用到的是Opencv当中的Stitcher类,在这个类下有一个create函数,它的作用是简短创建在其中一种缝合模式下配置的缝合器,参数不用调配,它会提供一个默认值,它的使用方式:cv2.Stitcher.create(),接下来,我们还需要用Stitcher类下的stitch函数,它的作用是,返回状态代码和拼接结果。

  • 最后如果返回的状态码正确,即status == cv2.STITCHER_OK,当然我们将代码改成
if (status == 0):

也没有任何问题,因为STITCHER_OK = 0。

4,项目总结与评价 如果你想创建一个应用程序,实现拼接功能,再了解特征检测的内部运行,将其结合在一起,这将是一个很棒思考的方向,因为我们的图片都是同一时间的场景,对比度,饱和度等是看不出变化的。
最初的效果展示中,我们可以看到在边角处还是存在着一些黑色瑕疵,那么两张尺寸不同的图,也可以进行拼接,只是有所缺角。

5,项目素材 Images/1/1.jpg
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片

Images/1/2.jpg
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片

Images/1/3.jpg
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片

Images/2/1.jpg
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片

Images/2/2.jpg
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片

希望大家可以开心的完成本项目,如果你觉得有用,请收藏和点赞。
Opencv项目实战|Opencv项目实战(04 全景图片拼接)
文章图片


    推荐阅读