基于OpenCV的全景图制作

一.实验目的:
        基于多幅图像(3 幅及以上),运用基于 2D 特征的配准方法,制作全景图。
二.实验内容:
        使用 OpenCV 库相应函数,实现全景图的制作。
三.实验代码:
import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

images = []  #存储图像

#初始化图像信息
def init(): 
    #读取图像
    images.append(cv.imread('./image/img1.jpg'))
    images.append(cv.imread('./image/img2.jpg'))
    images.append(cv.imread('./image/img3.jpg'))

    for i in range(3):
        #将images中的图像在水平方向和垂直方向上都将图像缩小到原始大小的50%
        #该操作有利于减少计算复杂度,提高拼接成功率
        #dsize=None:表示不指定目标图像的大小,此参数为None意味着目标大小将由缩放因子fx和fy决定。
        images[i] = cv.resize(src=images[i], dsize=None, fx=0.5, fy=0.5)

def stitching():
    # Stitcher是OpenCV库中的一个类,用于进行图像拼接。
    # 在此创建一个拼接对象,主要作用是将一系列的输入图像拼接成一个全景图。
    stitcher = cv.Stitcher().create()
    status, pano = stitcher.stitch(images)

    if status == cv.STITCHER_OK:  #如果能够拼接
        plt.imshow(pano[:,:,::-1])
        plt.show()
    else:
        print('拼接失败')

def main():
    init()
    stitching()

if __name__=='__main__':
    main()

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值