OpenCV合成全景图

2023-05-16

简介:OpenCV 利用特征提取、特征匹配、齐次估计、图像配准和图像融合等技术,将一系列图像合成为全景图。OpenCV 和 Pillow 是两个功能强大的 Python 图像处理库,但它们在处理全景图拼接方面有一些明显的区别。而Pillow 的图像融合功能较为简单,可能无法消除全景图中的接缝和阴影。在创建全景图方面,OpenCV 是一个更强大和灵活的解决方案。

历史攻略:

Python:合成图片

案例源码:

# -*- coding: utf-8 -*-
# time: 2023/5/7 11:33
# file: stitch_panorama.py
# 公众号: 玩转测试开发
import cv2
import sys
import os


def stitch_images(images):
    stitcher = cv2.Stitcher_create()
    status, panorama = stitcher.stitch(images)

    if status == cv2.Stitcher_OK:
        return panorama
    else:
        print("Error during stitching:", status)
        return None


def load_images(image_paths):
    images = []
    for path in image_paths:
        image = cv2.imread(path)
        if image is None:
            print(f"Error loading image {path}")
            sys.exit(1)
        images.append(image)
    return images


def main(image_folder):
    image_paths = [os.path.join(image_folder, img) for img in os.listdir(image_folder)]
    images = load_images(image_paths)
    panorama = stitch_images(images)

    if panorama is not None:
        cv2.imwrite("panorama.jpg", panorama)
        print("Panorama saved as panorama.jpg")
    else:
        print("Panorama stitching failed")


if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python stitch_panorama.py <image_folder>")
        sys.exit(1)

    image_folder = sys.argv[1]
    main(image_folder)

运行:

python stitch_panorama.py <path_to_image_folder>

合成前:

图片

图片

合成结果:效果上看,凑合能用。

图片

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV合成全景图 的相关文章

  • 实现回调(一)向回调函数传递额外的参数

    大部分回调函数都有传递给它们的自动参数 xff0c 如错误或结果缓冲区 使用回调时 xff0c 常见的一个问题时如何调用给它们传递额外的参数 做到这一点的方法是在一个匿名函数中实现该参数 xff0c 然后用来自匿名函数的参数调用回调函数 清
  • (node:3872) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issue

    NodeJS运行下列代码时报错 var numbers 61 Buffer 34 123456789 34 node 3872 DEP0005 DeprecationWarning Buffer is deprecated due to s
  • CentOS上搭建MPICH2开发环境的步骤

    本博客已迁往http coredumper cn 前提条件 共有 5 台机器 均安装有 CentOS6 4 系统 主机名分别为 node0 node1 node2 node3 node4 node0 作为主节点 这里的主节点是指将 node
  • 算法设计与分析5.11求解满足方程解问题

    编写一个实验程序 xff0c 求出a b c d e xff0c 满足ab cd e 61 1方程 xff0c 其中所有变量的取值为1 5并且均不相同 注 xff1a 原书上的方程为ab cd 43 e 61 1 xff0c 该方程无解 分
  • pip安装python第三方库的四种方法

    文章目录 一 无镜像安装二 镜像安装三 一劳永逸式镜像安装四 批量安装总结 一 无镜像安装 pip install 库名 打开命令提示符 win 43 r 输入cmd xff0c 在命令提示窗口输入pip install 库名 xff0c
  • 【计算机组成原理】实验5:运算器实验

    实验内容 一 实验原理 实验中所用的运算器数据通路如下图所示 ALU运算器由CPLD描述 运算器的输出经过2片74LS245三态门与数据总线相连 xff0c 2个运算寄存器AX BX的数据输入端分别由4个74LS374锁存器锁存 xff0c
  • 有什么免费好用的全球天气api?

    简单介绍几个 xff0c 选你觉得合适的就行 xff08 下面推荐的国内外的都有 xff0c 访问速度会有些差别 xff09 高德天气 API 天气查询 API文档 开发指南 Web服务 API 高德地图API知心天气 API HyperD
  • Xming的另一种配置,实现远程登录Linux图形界面

    Xming Xming xff1a 我估计这是最简单的登陆Linux桌面的方式了 可以到Xming的网站下载Xming软件 xff0c 因为是Windows软件 xff0c 所以安装非常简单 安装完成后会有两个快捷方式 xff0c 一个是X
  • openstack octavia 简介以及手工安装过程

    openstack octavia 是 openstack lbaas的支持的一种后台程序 xff0c 提供为虚拟机流量的负载均衡 实质是类似于trove xff0c 调用 nove 以及neutron的api生成一台安装好haproxy和
  • Win10 ubuntu子系统,如何安装到其他盘?

    win10的WSL子系统 xff0c 如果是按照网上的一般的安装方法 xff0c 基本都是安装到了C盘了 xff0c 但是只要稍微懂点电脑知识的人都不希望自己的软件安装到C盘 xff0c 那么这个子系统怎么能不安装到C盘咧 xff1f 首先
  • ffmpeg 转jpg文件为rgb32格式的文件

    ffmpeg i 1 jpg vcodec rawvideo pix fmt rgba raw1 rgb 1 jpg 需要转换的原始文件 rgba bgra rgba格式转换 raw1 rgb 转换完成输出的文件名 xff08 注 xff1
  • vbox下安装archlinux

    从 http mirrors ustc edu cn archlinux iso 下载archlinux 在vbox中启动安装介质 xff0c 默认关闭uefi 一路默认 xff0c 一直到磁盘分配 输入 span class hljs p
  • openstack zun源码分析

    容器服务启动过程 项目包括三个服务 xff0c 分别是zun api xff0c zun wsproxy xff0c zun compute xff0c 均使用systemctl来管理启动停止 xff0c 相关的服务文件如 zun api
  • 有效解决Ubuntu18.04无法联网问题

    网络配置 虚拟机的网络适配器的模式有两种 xff1a 桥接模式 xff1a 使得虚拟机拥有跟物理机一样的IP地址 NAT模式 xff1a 使得虚拟机直接共享物理机的IP xff0c 自己本身没有独立的IP地址 这两种模式选择在 以上两种模式
  • 5分钟带你了解音视频开发

    前言 想赚钱 xff0c 第一点就得选对自己的方向 xff0c 有的行业和领域 xff0c 无论你如何努力 xff0c 天花板也不过如此 选对时代的风口 xff0c 就算是头猪都能被吹上天 xff0c 今天我们就来聊聊音视频开发 蓬勃发展的
  • C# 学习笔记(一)-- C# 语言和 .NET 框架

    从今天开始 xff0c 在这里记录重新学习 C 的学习笔记 导语 之前曾经自学过一段时间的 C xff0c 也写过一些 WinForm 的小工具 个人认为 C 是我所见过的用法最为优雅 xff0c 使用起来最为舒服的语言 xff0c 因此便
  • Ubuntu 添加开机/关机执行脚本与service的理解

    最近碰到一个需求是需要在ubuntu中插入一个关机脚本 xff0c 在系统关机之前执行它 在网上浏览了很多资料 xff0c 但是没有切实可行的方法 xff0c 大多数的博客都是比较陈旧的方法 xff0c 可能已经不适用于最新的ubuntu1
  • Linux 进程间通信基础(四)--fifo管道

    最近正好有一些空余时间 xff0c 在这里总结一下曾经使用过的Linux进程间通信的几种方法 xff0c 贴出来帮助有需要的人 xff0c 也有助于自己总结经验加深理解 上一次我们梳理了pipe管道的相关知识 xff0c 这一次梳理fifo
  • 利用二进制文件制作自己的Debian软件安装包

    在使用Ubuntu系统的时候 xff0c 我们已经习惯了使用Debian风格的软件安装方式 即使用apt get install命令安转或dpkg i deb的方式安装debena软件包 但有时程序没有放到Ubuntu的源服务器上且不提供d
  • Tortoise Git 克隆出现"fatal: Authentication failed for"

    使用Tortoise Git克隆时出现 34 fatal Authentication failed for 34 的错误 xff0c 并且他还不让你输入用户名和密码 xff0c 寻找了许多办法 xff0c 看到最多的是在Git Bash中

随机推荐

  • 怎么解决 接口请求 504 Gateway Time-out

    HTTP 504 Gateway Timeout 错误通常是由于网关或代理服务器无法在规定的时间内从上游服务器接收到响应而导致的 这可能是由于上游服务器过载或网络问题导致的 要解决此问题 xff0c 可以尝试以下步骤 xff1a 检查上游服
  • WSL无法使用npm

    报错信息 root 64 DESKTOP U2RC2DU npm bash mnt c Program Files nodejs npm bin sh M bad interpreter No such file or directory
  • HDU 3700 Line belt

    Line belt Time Limit 2000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 3669 Accepted Su
  • Ubuntu中使用framebuffer的方法

    打开 etc initramfs tools modules文件 xff0c 在末尾加上 xff1a fbcon vesafb 打开 etc modprobe d blacklist framebuffer xff0c 找到 blackli
  • html5.超链接标签,图片标签

    lt a gt 超链接标签 a标签常用的属性 xff1a href 用于指定链接的资源 target 设置打开新资源的目标 Blank 在独立的窗口上打开新资源 self 在当前窗口打开新资源 file file协议 xff08 文件协议
  • ubuntu22.04 搭建 Pytorch环境

    关于电脑 第一步 安装anaconda 1 进入官网 链接 anaconda 2 下载linux的sh版 3 在对应位置输入 span class token function sh span 文件名 sh 4 选择 yes 5 选择no
  • opencv的ORB特征(slambook2 orb_cv.cpp代码详解)

    ORB特征提取与匹配 slambook2 ch7 orb cv cpp 1 头文件 span class token macro property span class token directive hash span span clas
  • Debian安装nodejs

    安装指定版本nodejs xff0c 以18 X版本为例 1 通过curl命令向系统中添加NodeSource存储库 curl sL https deb nodesource com setup 18 x bash xff08 如果提示 c
  • pip安装第三方库全攻略:普通安装、安装whl后缀文件、使用国内镜像安装

    简介 xff1a pip 是 Python 的包安装程序 其实 xff0c pip 就是 Python 标准库 xff08 The Python Standard Library xff09 中的一个包 xff0c 只是这个包比较特殊 xf
  • Python:处理cv2模块putText中文无法识别问题

    简介 xff1a 在cv2中 xff0c 目前putText函数中文是无法直接使用的 xff0c 需要进行一点的转换 解决办法为通过PIL模块重新封装一个函数 xff0c 直接调用 如图 xff1a 通过PIL模块改造 xff1a new
  • VLC播放电视直播rtmp流地址

    简介 xff1a RTMP是Real Time Messaging Protocol xff08 实时消息传输协议 xff09 的首字母缩写 该协议基于TCP xff0c 是一个协议族 xff0c 包括RTMP基本协议及RTMPT RTMP
  • Python:global的使用

    简介 xff1a 1 global是Python中的全局变量关键字 2 全局变量是编程术语中的一种 xff0c 源自于变量之分 3 变量分为局部与全局 xff0c 局部变量又可称之为内部变量 4 由某对象或某个函数所创建的变量通常都是局部变
  • Python:opencv画点、圆、线、多边形、矩形

    简介 xff1a 机器学习视觉方向一般都需要在图像中添加标注框 xff0c 标注框有着很大的用处 xff0c 特别是对图像中某些需要关注的特征起到圈定的效果 xff0c 方便对特征选择进行处理 相关攻略 xff1a 机器学习 xff1a 基
  • adb重启或关机手机命令

    简介 xff1a 在某些特殊场景中 xff0c 例如手机真机不在身边 xff0c 但已通过adb进行连接 xff0c 可以使用命令进行远程关机或者重启 相关攻略 xff1a adb xff1a 常用命令 adb xff1a win10系统下
  • docker:更换镜像源

    简介 xff1a 因为国内的网络访问问题 xff0c 为加快拉取镜像速度 xff0c 建议设置docker国内镜像源 相关攻略 xff1a win10 xff1a 安装docker和测试安装redis centos7 6 xff1a 安装d
  • 七大顶级Linux桌面比较

    1七大顶级Linux桌面 xff1a Unity 对于开源Linux平台来说 xff0c 如何选择就是首要解决的问题 通常Linux发行版都有默认的桌面成为你的首选 xff0c 但目前可供选择的桌面环境种类繁多 特别是Ubuntu系统一个平
  • Linux:安装go环境

    简介 xff1a Go xff08 又称 Golang xff09 是 Google 的 Robert Griesemer xff0c Rob Pike 及 Ken Thompson 开发的一种静态强类型 编译型语言 Go 语言语法与 C
  • docker应用:搭建私有云盘

    简介 xff1a NextCloud是一个开源的云存储解决方案 xff0c 可以在自己的服务器上搭建个人云存储系统 它提供了与市面上主流云存储服务 xff08 如Dropbox Google Drive xff09 相似的功能 xff0c
  • Flask+A-Frame:交互式全景图展示网站

    简介 xff1a 通过结合 Flask 轻量级 Web 框架与 A Frame 3D 和 VR 技术 xff0c 实现了一个可交互的全景图展示功能 xff0c 用户可以在浏览器中自由观看 旋转和缩放全景图片 项目的核心是使用 Flask 搭
  • OpenCV合成全景图

    简介 xff1a OpenCV 利用特征提取 特征匹配 齐次估计 图像配准和图像融合等技术 xff0c 将一系列图像合成为全景图 OpenCV 和 Pillow 是两个功能强大的 Python 图像处理库 xff0c 但它们在处理全景图拼接