最详细的解释——如何实现多张图片拼接为一张图(一)

article/2025/11/9 22:53:32

日常生活中,我们经常需要将多张图片合成为一张图片,但是却又找不到好的方法,直接将多张图片拖拽到一起不仅耗时耗力,而且效率低,效果差。OpenCV 给我们提供了很好的拼接工具,下面我们以两张图片的拼接为例介绍常见的拼接算法。

一、不重叠拼接图片

1、使用concatenate横向连接图片,代码如下:

import cv2
import numpy as npimg1 = cv2.imread('E:/picture/room/room1.jpg')
img2 = cv2.imread('E:/picture/room/room2.jpg')# 横向连接
image = np.concatenate((img1, img2), axis=1)# 纵向连接
# image = np.concatenate((img1, img2), axis=0)
cv2.imshow('image', image)
cv2.waitKey()
cv2.destroyAllWindows()

显示结果:

在这里插入图片描述
concatenate函数也可以可以实现纵向连接,代码见上,拼接的结果如下:
在这里插入图片描述我们发现使用concatenate函数连接图片,横向和纵向拼接只需要改变axis的参数值即可。

2、使用joint连接两张图片
该方法主要是使用PIL库中的Image类,然后使用paste方法来拼接图片获得完成图。代码如下:

from PIL import Imagedef join(png1, png2, flag='vertical'):img1, img2 = Image.open(png1), Image.open(png2)size1, size2 = img1.size, img2.sizeif flag == 'horizontal':joint = Image.new('RGB', (size1[0]+size2[0], size1[1]))loc1, loc2 = (0, 0), (size1[0], 0)joint.paste(img1, loc1)joint.paste(img2, loc2)joint.save('horizontal.png')elif flag == 'vertical':joint = Image.new('RGB', (size1[0], size1[1]+size2[1]))loc1, loc2 = (0, 0), (0, size1[1])joint.paste(img1, loc1)joint.paste(img2, loc2)joint.save('vertical.png')if __name__ == '__main__':img1 = 'D:/Programprojects/PycharmProjects/Image-Stitching-with-OpenCV-and-Python/image_rotate/img1.jpg'img2 = 'D:/Programprojects/PycharmProjects/Image-Stitching-with-OpenCV-and-Python/image_rotate/img2.jpg'join(img1, img2, flag='horizontal')join(img1, img2, flag='vertical'

拼接的结果如下:
横向拼接效果:
在这里插入图片描述
纵向拼接效果:
在这里插入图片描述

3、使用numpy库自带的hstack()和vstack()
代码如下:

import cv2
from pylab import *img1 = cv2.imread('E:/picture/room/room1.jpg')
img2 = cv2.imread('E:/picture/room/room2.jpg')# 横向拼接
htitch = np.hstack((img1, img2))
# 纵向拼接
# vtitch = np.vstack((img1, img2))
cv2.imwrite('./img.jpg', htitch)
# cv2.imwrite('./img.jpg', vtitch)
cv2.imshow("test1", htitch)
# cv2.imshow("test2", vtitch)cv2.waitKey(0)
cv2.destroyAllWindows()

实验结果如下:
在这里插入图片描述在这里插入图片描述
希望对大家有所帮助。

参考:
1、Python将两张图片按横向或纵向拼接成一张图片
2、python将多幅图片显示在一张图片上


http://chatgpt.dhexx.cn/article/on6vfW93.shtml

相关文章

照片怎么拼图合成一张?这几个方法建议收藏

前段时间,我和朋友出去旅游时,拍了许多照片。当我们回到家中时,决定将这些照片分享到朋友圈上,来纪念这一段旅游经历。但是,由于想要分享的图片很多,而朋友圈只能发布9张图片,因此,我…

怎样能把两张照片拼成一张图片,1分钟搞定

怎样能把两张照片拼成一张图片?图片拼合的应用场景是很多的。比如将几张相册中的照片拼成一张合影、将多个地图截图拼合在一起形成一个更大的区域地图、将多个漫画图像合并成一本漫画册等。这项技术可以方便地将多张图片整合为一张,节省时间和精力。 因此…

windows启动tomcat

启动Tomcat 方法有三种: 方法一:在tomcat解压路径下的bin文件夹内双击打开"tomcat9w.exe",在打开的软件界面点击“Start”即可。 点击start 方法二:右键点击桌面上的“此电脑”—>“管理”—>“服务和应用程序…

tomcat 安装与启动

tomcat 安装与启动 tomcat 下载:Apache Tomcat - Apache Tomcat 10 Software Downloads ******************** tomcat 安装包说明 zip:基础安装包,不包含windows服务相关的批处理脚本、以及windows下的APR本地库 tar.gz:与zip报内…

怎么测试Tomcat是否安装配置成功

我们打开Tomcat的安装路径,如下: 我们双击“bin”文件夹,如下: 我们再双击上图中标出的start.dat文件,如下: (注意:点击bin下面的startup.bat文件手动启动,可能老是出现窗…

tomcat启动很慢的解决方式

很多人肯定都用tomcat容器来启动项目,但可能有些时候启动时间特别长,甚至达到了几万毫秒至几十万毫秒,除去开发idea的问题和代码架构本身问题外,可能就是tomcat容器的优化问题,下面提供一种优化启动的方式。 1.首先我…

启动tomcat遇到的问题

1.Error running ‘Tomcat8‘: The selected directory is not a TomEE home 问题 使用IDEA创建spring项目时,启动tomcat老是报错: Error running Tomcat8: The selected directory is not a TomEE home 原因 配置本地的tomcat应该选择Tomcat Server&…

启动Tomcat时常见的报错

启动Tomcat时常见的报错 问题1:启动Tomcat时闪退 问题原因:JDK环境变量配置有误 解决方案: 将鼠标光标移至 此电脑 右击鼠标选择属性一栏,进入系统界面在左侧菜单栏选择高级系统设置,并点击环境变量 进入环境变量之…

Tomcat配置及启动

在高级系统设置里面: 输入变量名CATALINA_BASE再输入安装路径, 输入变量名CATALINA_HOME和安装路径, 在变量值Path中添加%CATALINA_HOME%\bin。 在bin目录里面点击startup启动; 如果启动后如下图; 但是不能访问127…

Java启动Tomcat

文章目录 目标:实现: 一、前期准备 1、加入依赖2、定义Servlet类3、定义Servlet类4、启动Tomcat并测试 总结 流程图重点及易错点 1、服务器阻塞等待请求 目标: 学习使用java代码启动Tomcat。 实现: 一、前期准备 实现自定…

Tomcat安装和启动

Tomcat下载 地址:Apache Tomcat - Apache Tomcat 8 Software Downloads解压得到以下目录: bin: 专门用来存放Tomcat服务器的可执行程序 conf: 专门用来存放Tomcat服务器的配置文件lib:专门用来存放Tomcat服务器的jar包logs:专门用…

tomcat启动网站

servlet里没有主方法,靠tomcat里的主方法运行 一般程序安装程序都包含 bin:包含启动脚本 conf:config的缩写,里面有配置文件,程序启动会读配置文件 lib:程序的主体部分 logs:运行日志 tom…

Tomcat的安装与启动

1、JavaWeb的基本概念 JavaWeb 是指,所有通过 Java 语言编写可以通过浏览器访问的程序的总称,叫 JavaWeb。 JavaWeb 是基于请求和响应来开发的。 请求:是指客户端给服务器发送数据,叫请求 Request。 响应:是指服务…

Tomcat的server启动

1.server的启动 前面我们说过了,server的启动过程主要是通过catalina进行一个启动,而在启动过程中他又经历了哪些过程呢? 从代码中看,server的启动过程中,他继承了lifecycleMbeanBase这个类并且实现了接口server&…

tomcat(17)启动tomcat

【0】README 1)本文部分文字描述转自“how tomcat works”,旨在学习“tomcat(17)启动tomcat”的相关知识; 2)本文重点关注启动Tomcat时会用到的两个类,分别是Catalina类和 Bootstrap类;(干货——…

Tomcat的安装和启动

前言:Tomcat 是 Servlet 容器的一种,它是一个小型的(体积小)、轻量级的、免费开源的 Java Web 服务器。Tomcat 运行时占用的系统资源少,性能稳定,并且采用了先进和前沿的技术,所以它成为目前比较…

Tomcat安装及启动

日升时奋斗,日落时自省 目录 1、Tomcat下载 2、JDK安装及配置环境 3、Tomcat配置环境 4、启动Tomcat 5、部署演示 1、Tomcat下载 直接入主题,下载Tomcat 首先就是别下错了,直接找官方如何看是不是广告,或者造假 搜索Tomc…

Tomcat启动流程

一、流程简述 在Tomcat的bin目录下存放着Tomcat在Windows环境下和Linux环境下的启动脚本 在start脚本文件中会去启动catalina的脚本文件 catalina脚本文件中会去调用启动类(org.apache.catalina.startup.Bootstrap)来进行Tomcat的初始化 启动的流程图如下 二、启动流程 Init …

两种启动tomcat的方法

一,找到 Tomcat 目录下的 bin 目录下的 startup.bat 文件,双击,就可以启动 Tomcat 服务器 在D:\Tomcat\apache-tomcat-8.0.50\bin下找到setclasspath.bat右击编辑,在最后输入pause,即可查看错误 二,1打开命…

idea热启动

快捷键:ctrlshiftalt/ 然后重启 IDEA 注意:开发阶段开启热部署,生产阶段必须关闭