如何使用OpenCV Python将两个图像水平和垂直连接?

如何使用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.hcocat()cv2.vconcat() 将图像水平或垂直连接。

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

显示连接的图像

plt.imshow(img)

输入图像

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

如何使用OpenCV Python将两个图像水平和垂直连接?

如何使用OpenCV Python将两个图像水平和垂直连接?

示例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()

输出结果

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

如何使用OpenCV Python将两个图像水平和垂直连接?

示例2

以下程序演示了如何垂直连接两个图像。

# 导入所需库
import cv2
import matplotlib.pyplot as plt

# 读取两个输入图像
img1 = cv2.imread('birds.jpg')
img2 = cv2.imread('lamp.jpg')

# 两个图像的高度和宽度应相同
img1 = cv2.resize(img1, (700, 550))
img2 = cv2.resize(img2, (700, 550))

# 垂直连接两个图像
img = cv2.vconcat([img1, img2])

# 将BGR图像转换为RGB
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)
plt.show()

输出

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

如何使用OpenCV Python将两个图像水平和垂直连接?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV