如何使用OpenCV Python水平和垂直拼接两张图像?


在OpenCV中,图像表示为numpy.ndarrayOpenCV提供两个函数——cv2.hconcat()cv2.vconcat()来拼接图像。

函数cv2.hconcat()水平拼接图像,函数cv2.vconcat()垂直拼接图像。

  • 这些函数可以拼接两张或多张图像。

  • 这些函数接受大小相同的图像列表进行拼接。

  • 为了拼接图像,所有图像的高度、宽度和通道数必须相同。

语法

cv2.hconcat(img_list)
cv2.vconcat(img_list)

其中img_list是图像列表[img1, img2, …]

要水平或垂直拼接图像,可以按照以下步骤操作:

步骤

导入所需的库。在以下所有Python示例中,所需的Python库为OpenCVMatplotlib。确保你已经安装了它们。

import cv2
import matplotlib.pyplot as plt

使用cv2.imread()函数读取图像。用图像类型(.jpg或.png)指定完整的图像路径。

img1 = cv2.imread('birds.jpg')
img2 = cv2.imread('lamp.jpg')

如果图像大小不同,请调整图像大小。只有大小相同的图像才能拼接。

分别使用cv2.hconcat()cv2.vconcat()水平或垂直拼接图像。

img = cv2.hconcat([img1, img2])

显示拼接后的图像。

plt.imshow(img)

输入图像

在下面的示例中,我们将使用这些图像作为输入文件。

示例1

在下面的Python程序中,我们将水平拼接两张图像。

# import required library import cv2 import matplotlib.pyplot as plt # read two input images img1 = cv2.imread('birds.jpg') img2 = cv2.imread('lamp.jpg') # both image height and width should be same img1 = cv2.resize(img1, (700, 550)) img2 = cv2.resize(img2, (700, 550)) # join the two images horizontally img = cv2.hconcat([img1, img2]) # Convert the BGR image to RGB img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img) plt.show()

输出

运行上述程序后,将会生成以下输出窗口。

示例2

下面的程序演示了如何垂直拼接两张图像。

# import required library import cv2 import matplotlib.pyplot as plt # read two input images img1 = cv2.imread('birds.jpg') img2 = cv2.imread('lamp.jpg') # both image height and width should be same img1 = cv2.resize(img1, (700, 550)) img2 = cv2.resize(img2, (700, 550)) # join the two images vertically img = cv2.vconcat([img1, img2]) # Convert the BGR image to RGB img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img) plt.show()

输出

运行上述程序后,将会生成以下输出窗口。

更新于:2022年9月27日

5K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告