OpenCV(实战)全景拼接

目录

过程

1、导入主文件夹、子文件夹

2、获取子文件(图片),把图片放入图片列表

3、对图片列表中的图片进行缝合

总代码及效果


过程

概述:采用的多文件夹,子文件夹里面放的才是图片。

主文件夹:

 子文件夹1、2:

1号文件夹: 

 

2号文件夹:

 

1、导入主文件夹、子文件夹

    # 主文件夹
    mainFolder = 'Scenes'
    # 子文件夹
    folders = os.listdir(mainFolder)
    print(folders)

2、获取子文件(图片),把图片放入图片列表

# 3、得到子文件(图片)
    for folder in folders:
        ImageList = []
        path = mainFolder + '/' + folder    #子文件夹路径
        Images = os.listdir(path)           #获取文件夹下的图片名称列表(List)

        # 得到图片
        for Img in Images:
            Image = cv2.imread(f'{path}/{Img}')     #图片     f:格式化字符串
            # 把图片放入图片列表
            ImageList.append(Image)

 依次遍历所有文件夹下的图片:

文件夹1:(只举一个例子)

 

 

 

中途犯得错误:(不同变量名称相同) :导致不论怎么搞都有错误,

 

3、对图片列表中的图片进行缝合

# 4、缝合图片
        stitcher = cv2.Stitcher.create()                #创建缝合器
        status, result = stitcher.stitch(ImageList)     #对图片列表进行缝合
        # 判断是否成功
        if status == cv2.STITCHER_OK:
            print('Success!')
            cv2.imshow('result', result)
            cv2.waitKey(5000)
        else:
            print('Error!')

总代码及效果

# 全景拼接
import cv2
import os


# 导入文件
def Import_Files():
    # 1、主文件夹
    mainFolder = 'Scenes'
    # 2、子文件夹
    folders = os.listdir(mainFolder)

    # 3、得到子文件(图片)
    for folder in folders:
        ImageList = []
        path = mainFolder + '/' + folder    #子文件夹路径
        Images = os.listdir(path)           #获取文件夹下的图片名称列表(List)

        # 得到图片
        for Img in Images:
            Image = cv2.imread(f'{path}/{Img}')     #图片     f:格式化字符串
            # 把图片放入图片列表
            ImageList.append(Image)

        # 4、缝合图片
        stitcher = cv2.Stitcher.create()                #创建缝合器
        status, result = stitcher.stitch(ImageList)     #对图片列表进行缝合
        # 判断是否成功
        if status == cv2.STITCHER_OK:
            print('Success!')
            cv2.imshow('result', result)
            cv2.waitKey(5000)
        else:
            print('Error!')


if __name__ == '__main__':
    Import_Files()          #导入文件

    cv2.waitKey(0)          #无限延时

文件夹1: 

文件夹2: 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OpenCV提供了两种方法进行图像全景拼接。一种是使用OpenCV内置的Stitcher API进行拼接,另一种是使用特征检测算法匹配两幅图像中相似的点,计算变换矩阵,最后进行透视变换。\[1\] 对于使用OpenCV内置的Stitcher进行拼接,可以使用以下代码实现: ```cpp bool OpenCV_Stitching(Mat image_left, Mat image_right) { vector<Mat> images; images.push_back(image_left); images.push_back(image_right); Ptr<Stitcher> stitcher = Stitcher::create(); Mat result; Stitcher::Status status = stitcher->stitch(images, result); if (status != Stitcher::OK) return false; imshow("OpenCV图像全景拼接", result); return true; } ``` 这段代码将两幅图像放入一个容器中,然后创建一个Stitcher模型。使用stitch函数进行拼接,最后将结果显示出来。\[2\] 另一种方法是使用特征检测算法进行拼接。这个方法包括以下步骤:特征检测、计算单应性矩阵、透视变换和图像拼接。具体的代码实现和效果可以参考相关资料\[3\]。 总之,OpenCV提供了多种方法进行图像全景拼接,可以根据具体需求选择合适的方法进行使用。 #### 引用[.reference_title] - *1* *2* *3* [OpenCV C++案例实战十二《图像全景拼接》](https://blog.csdn.net/Zero___Chen/article/details/122274445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_(*^▽^*)_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值