1.http://www.cnblogs.com/skyfsm/p/7411961.html ,给出了很好地拼接算法实现

2.由于不是Python的,所以简单做了一些翻译转成Python+opencv的实现

3.修改了原来的特征点检测算法为ORB(由于sift和surf的专利问题)

4.结果

5.源码

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspecGOOD_POINTS_LIMITED = 0.99
src = 'photoes\\homograph\\w1.jpg'
des = 'photoes\\homograph\\w2.jpg'img1_3 = cv.imread(src,1)# 基准图像
img2_3 = cv.imread(des,1)# 拼接图像orb = cv.ORB_create()
kp1, des1 = orb.detectAndCompute(img1_3,None)
kp2, des2 = orb.detectAndCompute(img2_3,None)bf = cv.BFMatcher.create()matches = bf.match(des1,des2)matches = sorted(matches, key = lambda x:x.distance)goodPoints =[]
for i in range(len(matches)-1):
if matches[i].distance < GOOD_POINTS_LIMITED * matches[i+1].distance:
goodPoints.append(matches[i])# goodPoints = matches[:20] if len(matches) > 20   else matches[:]
print(goodPoints)img3 = cv.drawMatches(img1_3,kp1,img2_3,kp2,goodPoints, flags=2,outImg=None )src_pts = np.float32([kp1[m.queryIdx].pt for m in goodPoints]).reshape(-1, 1, 2)
dst_pts = np.float32([kp2[m.trainIdx].pt for m in goodPoints]).reshape(-1, 1, 2)M, mask = cv.findHomography( dst_pts,src_pts, cv.RHO)# 获取原图像的高和宽
h1,w1,p1 = img2_3.shape
h2,w2,p2 = img1_3.shapeh = np.maximum(h1,h2)
w = np.maximum(w1,w2)_movedis = int(np.maximum(dst_pts[0][0][0],src_pts[0][0][0]))
imageTransform = cv.warpPerspective(img2_3,M,(w1+w2-_movedis,h))M1 = np.float32([[1, 0, 0], [0, 1, 0]])
h_1,w_1,p = img1_3.shape
dst1 = cv.warpAffine(img1_3,M1,(w1+w2-_movedis, h))dst = cv.add(dst1,imageTransform)
dst_no = np.copy(dst)dst_target = np.maximum(dst1,imageTransform)fig = plt.figure (tight_layout=True, figsize=(8, 18))
gs = gridspec.GridSpec (6, 2)
ax = fig.add_subplot (gs[0, 0])
ax.imshow(img1_3)
ax = fig.add_subplot (gs[0, 1])
ax.imshow(img2_3)
ax = fig.add_subplot (gs[1, :])
ax.imshow(img3)
ax = fig.add_subplot (gs[2, :])
ax.imshow(imageTransform)
ax = fig.add_subplot (gs[3, :])
ax.imshow(dst1)
ax = fig.add_subplot (gs[4, :])
ax.imshow(dst_no)
ax = fig.add_subplot (gs[5, :])
ax.imshow(dst_target)
ax.set_xlabel ('The smooth method is SO FAST !!!!')
plt.show()

转载于:https://www.cnblogs.com/aaron-clark-aic/p/9994677.html

Python+opencv 图像拼接相关推荐

  1. python+opencv图像拼接-python opencv 图像拼接的实现方法

    初级的图像拼接为将两幅图像简单的粘贴在一起,仅仅是图像几何空间的转移与合成,与图像内容无关.高级图像拼接也叫作基于特征匹配的图像拼接,拼接时消去两幅图像相同的部分,实现拼接合成全景图. 具有相同尺寸的 ...

  2. python opencv图像拼接

    OpenCV 是一个开源的计算机视觉库,可以用来进行图像处理和计算机视觉方面的开发.它提供了一系列的函数和类来实现图像拼接. 在 Python 中使用 OpenCV 进行图像拼接时,需要用到 cv2 ...

  3. python opencv图像拼接 多张图相互有重复部分

    import cv2 import math import os# 文件夹所有图片 path = "Images/ROIRun" images = [] for filename ...

  4. python图像拼接_python opencv 图像拼接的实现方法

    初级的图像拼接为将两幅图像简单的粘贴在一起,仅仅是图像几何空间的转移与合成,与图像内容无关.高级图像拼接也叫作基于特征匹配的图像拼接,拼接时消去两幅图像相同的部分,实现拼接合成全景图. 具有相同尺寸的 ...

  5. python+opencv实现多张图像拼接_附源码

    文章目录 前言 完整源码 下载链接:[https://download.csdn.net/download/DeepLearning_/87290571](https://download.csdn. ...

  6. python全景图像拼接_Python+OpenCV实现图像的全景拼接

    本文实例为大家分享了Python+OpenCV实现图像的全景拼接的具体代码,供大家参考,具体内容如下 环境:python3.5.2 + openCV3.4 1.算法目的 将两张相同场景的场景图片进行全 ...

  7. 重磅升级,52个Python+OpenCV实战项目教你掌握图像处理

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的 ...

  8. python——opencv入门(一)

    1. OpenCV的结构 和Python一样,当前的OpenCV也有两个大版本,OpenCV2和OpenCV3.相比OpenCV2,OpenCV3提供了更强的功能和更多方便的特性.不过考虑到和深度学习 ...

  9. Python + OpenCV + DeepLearning 解数独问题【一、数独的提取】

    整个解数独问题可以大致分为3个部分: 从图片中提取出完整的数独[本文的部分] 从数独中提取出数字并传入神经网络进行预测 解出数独 [环境] Python:3.8.5 OpenCV:4.5.1 Kera ...

最新文章

  1. 设计模式学习1:设计模式简述和设计模式原则
  2. adviser vs mentor
  3. [转载] 中华典故故事(孙刚)——21 正月剪头死舅舅
  4. linux上安装spark_hadoop_java_scala
  5. OpenCV油画效果
  6. Java中的数组数据结构需要了解的要点
  7. 如何画正太分布曲线_python scipy.stats实现各种常见的统计分布
  8. 【工作手札】日常工作笔记
  9. 优酷路由宝文件服务器,优酷路由宝L1刷breed加刷高恪路由,最新可用包含工具及所有文件2019年10月13...
  10. Python+Cartopy绘制中国地图
  11. 数据结构-线性链表的实现和应用
  12. python爬取qq空间相册图片_如何用 Python 爬取 QQ 空间说说和相册?
  13. 微信小程序常用样式汇总
  14. 你真的理解this吗
  15. Word-去掉标题前面的小黑点
  16. fzyzojP3580 -- [校内训练-互测20180315]小基的高智商测试
  17. 徐姗姗 20190912-2 命令行
  18. MetaLife Web3开放元宇宙vs内卷致命的Web2元宇宙
  19. tagul添加中文字体——最简单的方法
  20. Windows截图快捷键及自动保存路径

热门文章

  1. 量子位MEET大会报名开启!各领域头部玩家集结,AI年度榜单揭晓,在这里预见智能科技新未来...
  2. 哈佛新研究登上Science封面:这个机械外骨骼,是一条“轻功”短裤
  3. 谁在“唱衰”OpenStack?
  4. xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务
  5. JavaScript内存优化
  6. Spring boot 嵌入的tomcat不能启动: Unregistering JMX-exposed beans on shutdown
  7. Android onclicklistener中使用外部类变量时为什么需要final修饰【转】
  8. Mysql分析性能(存储过程)
  9. C++中文转码问题(GB2312 - UTF8)
  10. Eclipse 每行 79 字符限制的提示线