1,效果展示

首先,需要拍摄像这种的图片(当然,大家用我这的就可以了,我实在是太了解大家了)。

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

效果非常的棒,那我们再来看看,不同大小的图片的拼接效果

除了缺失的角,其他的都还好说,本来也在我的意料之中,如果还能实现自动补齐,那我肯定会大呼一声:“厉害!!”


2,项目准备

(1)文件夹

在pycharm项目中,请向我一样按照如图下所示创建。

我们只需要一个放置不同图片的文件夹和一个.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)函数,他会返回一个包含了此路径下的列表如下所示:

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

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

4,项目总结与评价

如果你想创建一个应用程序,实现拼接功能,再了解特征检测的内部运行,将其结合在一起,这将是一个很棒思考的方向,因为我们的图片都是同一时间的场景,对比度,饱和度等是看不出变化的。

最初的效果展示中,我们可以看到在边角处还是存在着一些黑色瑕疵,那么两张尺寸不同的图,也可以进行拼接,只是有所缺角。

5,项目素材

Images/1/1.jpg

Images/1/2.jpg

Images/1/3.jpg

Images/2/1.jpg

Images/2/2.jpg

希望大家可以开心的完成本项目,如果你觉得有用,请收藏和点赞。

Opencv项目实战:04 全景图片拼接相关推荐

  1. 拉钩网前端项目实战04

    拉钩网前端项目实战 拉钩网前端项目实战04 banner和content设计 一.banner部分设计 1.html部分 <div class="banner">< ...

  2. Python项目实战 —— 04. 淘宝用户行为分析

    Python项目实战 Python项目实战--目录 Python项目实战 -- 04. 淘宝用户行为分析 一.背景 二.解题思路 三.数据分析 3.1 数据清洗 3.2 数据分析 3.2.1 用户整体 ...

  3. 【Opencv项目实战】背景替换:动态背景移除与替换(cvzone+MediaPipe)

    文章目录 一.项目思路 二.环境布置 2.1.cvzone安装 2.2.MediaPipe安装 2.3.常见问题 2.4.注意事项 三.算法详解 3.1.segmentor.removeBG():去除 ...

  4. Opencv项目实战-信用卡数字识别

    Opencv项目实战:信用卡数字识别 导入库,定义展示函数 import cv2 import numpy as np from imutils import contours import myut ...

  5. 基于C++的OpenCV项目实战——文档照片转换成扫描文件

    基于C++的OpenCV项目实战--文档照片转换成扫描文件 一.背景 前段时间都是基于Python的OpecCV进行一些学习和实践,但小的知识点并没有应用到实际的项目中:并且基于Python的版本的移 ...

  6. Opencv项目实战:14 手势控制音量

    目录 0.项目介绍 1.项目展示 2.项目搭建 3.项目的代码与讲解 4.项目资源 5.项目总结 0.项目介绍 本篇与上一篇有很多联系,大家可以看看这篇Opencv项目实战:13 手部追踪,我们将根据 ...

  7. Android 利用OpenCV 的Stitcher做全景图片拼接(支持平面和球面)

    开发项目中遇到一个需求 就是用手机按照顺序拍几张图片 然后将图片拼接成一张全景的照片 百度了一下 看到OpenCV 的Stitcher工具支持全景图片拼接 于是研究了一下OpenCV  花了差不多一周 ...

  8. 【Opencv项目实战】目标追踪:实时追踪人工标注的多个目标

    文章目录 一.项目思路 二.问题清单 三.算法详解 3.1.定义目标追踪算法 3.2.初始化追踪器 3.3.更新目标追踪器 3.4.绘制目标矩形框 3.5.人工标注感兴趣目标 3.5.1.标注ROI区 ...

  9. Opencv项目实战:基于dlib的疲劳检测

    文章目录 一.项目简介 二.算法原理 三.环境配置 3.1.dlib人脸检测器:dlib.get_frontal_face_detector() 3.2.dlib关键点定位工具:shape_predi ...

最新文章

  1. 前端技术周刊 2018-03-02
  2. 抓取html的地址怎么写,html js 获取地址栏参数
  3. 2021-07-12
  4. 2021- 10 -13 AVL树的平衡调整(有parent指针) 代码逻辑
  5. MySQL主主复制 外键_MySQL 组复制介绍
  6. Sherman-Morrison公式及其应用
  7. java ee ide 假死_Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
  8. 多线程——线程间的同步通信
  9. 2017年网易校招题 数字翻转
  10. @value获取不到值
  11. 中国企业海外人才发展白皮书
  12. virtio-fs: A Shared File System for Virtual Machines
  13. 几个性能测试工具/框架的比较
  14. java 格式化日期(DateFormat)
  15. hbase java 分页查询_HBase伪快速分页查询
  16. 《算法笔记》和《算法笔记上机训练指南》学习笔记汇总
  17. arcgis python计算面积_如何在ARCMAP里面计算面积
  18. 计算机系技能比赛黑板报,技能成就梦想黑板报图文
  19. 第一集 斗罗世界 第六章
  20. 学会这一招,轻松处理图片转ico格式

热门文章

  1. 我说2w字可以入门ES,非但不信还打我
  2. JAVA实现遗传算法
  3. 如何让员工心甘情愿地加班
  4. 得“田”独厚,数字孪生技术让农业管理领域智慧起来,打造线上线下一体化发展
  5. 文本识别--Focusing Attention: Towards Accurate Text Recognition in Natural Images
  6. 碰撞检测GJK算法论文解析二
  7. Linux 内核协议栈之TCP连接关闭
  8. OpenLayers 在Vue中画点线面
  9. Python 一个函数快速复制sheet工作表到另一个工作簿
  10. 【推荐】老家中秋要贴对联?不慌,我立马写了一款免费且无限的对联生成器~