如何使用OpenCV Python将两个图像水平和垂直连接?
在OpenCV中,图像被表示为 numpy.ndarray 。 OpenCV 提供了两个函数—— cv2.hconcat() 和 cv2.vconcat() ,用于合并图像。
函数 cv2.hconcat() 将图像水平连接,而函数 cv2.vconcat() 将图像垂直连接。
- 这些函数连接两个或多个图像。
-
这些函数接受大小相同的图像列表以将它们连接在一起。
-
所有图像的高度、宽度和通道数必须相同才能将它们连接起来。
语法
cv2.hconcat(img_list)
cv2.vconcat(img_list)
其中 img_list 是一个图像列表 [img1, img2, …] 。
要水平或垂直连接图像,可以按照以下步骤操作:
步骤
导入所需的库。在以下所有Python示例中,所需的Python库为 OpenCV 和 Matplotlib 。请确保已经安装它们。
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)
输入图像
我们将在以下示例中使用这些图像作为输入文件。
示例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 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()
输出
运行以上程序后,将产生以下输出窗口。