【Opencv】Python+openCV实现全景图拼接(左右两张图片拼接成一张全景图)

Python+openCV实现全景图拼接(左右两张图片拼接成一张全景图)

全景图拼接

思路

这个就是简单对左右两张图进行拼接,希望实现下面效果:

左图
全景图
右图

这里不是指严丝合缝的可以直接拼接的图,比如
如下面两个图:(以中间那个仙人掌(貌似)为指标,可见第一张图应该位于全景图的左边,第二张图位于全景图右边)
在这里插入图片描述
想要实现效果(简单拼接成全景图,其实融合的不太好):
在这里插入图片描述

我们需要:

  • 找两张图片中相似的点,计算变换矩阵
  • 变换一张图片放到另一张图片合适的位置

1.SIFT确定关键点
2.对两张图做特征匹配
3.要实现两张图片的简单拼接,其实只需找出两张图片中相似的点 (至少四个,因为 homography 矩阵的计算需要至少四个点), 计算一张图片可以变换到另一张图片的变换矩阵 (homography 单应性矩阵),用这个矩阵把那张图片变换后放到另一张图片相应的位置 ( 就是相当于把两张图片中定好的四个相似的点給重合在一起)。如此,就可以实现简单的全景拼接。
注意:下面代码都是对右图计算变换矩阵的,最终将左图拼接上去即可实现简单的全景拼接

具体步骤

(1)检测左右2图片的SIFT关键特征点,并计算特征描述
(2)使用KNN检测来自左右2图的SIFT特征,进行匹配
(3)计算视角变换矩阵H,用变换矩阵H对右图进行变换
(4)左图加入到变换后的图像获得最终图像

代码与结果

代码

import cv2
import numpy as np

def cvshow(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

def sift_kp(image
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值