如何使用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.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()
输出
运行上述程序后,将会生成以下输出窗口。
广告