如何使用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+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.