python opencv將多個圖放在一個窗口的實例詳解

編程需求:使用python+opencv對圖像進行處理,把兩張圖放在一起顯示

方法:使用numpy模塊中的水平堆疊豎直堆疊完成所有圖像的堆疊,最後當成一整張圖顯示。

註意:把不同的尺寸(寬和高)的圖片或不同的顏色通道在一起來展示,會發生黑屏,所以要麼把兩張圖的高度設置相同,要麼寬度相同。這樣才能正常顯示。

舉個栗子:

1.隻設置兩張圖的高相同,拼接兩圖,顯示;隻設置兩張圖的寬相同,拼接兩圖,顯示。

import cv2
import numpy as np
#讀圖1和圖2
img1 = cv2.imread(r"C:\Users\thorne\PycharmProjects\biyesheji\image\3.jpg")
img2 = cv2.imread(r"C:\Users\thorne\PycharmProjects\biyesheji\image\1.jpeg")
#重新設置圖1的寬和高
img1 = cv2.resize(img1, (400, 400))
#設置圖2的高為400,與圖1相同,寬自己任意設置,我這裡設置為200
img2 = cv2.resize(img2, (200, 400))
#設置圖2的寬為300,與圖1相同,高自己任意設置,我這裡設置為200
img3 = cv2.resize(img2, (400, 200))
# 高度相同的圖像,橫向水平拼接圖
imgStackH = np.hstack((img1, img2))
# 寬度相同的圖像,垂直水平拼接圖
imgStackV = np.vstack((img1, img3))
# 在窗口顯示圖像 imgStackH 橫向水平拼接圖
cv2.imshow("DemoStackH", imgStackH)
# 在窗口顯示圖像 imgStackV垂直水平拼接圖
cv2.imshow("DemoStackV", imgStackV)
key = cv2.waitKey(0)  # 等待按鍵命令

運行結果:寬度相同時拼接

 高度相同時拼接

 從上面結果可以看出,雖然兩張圖拼接到瞭一起,但是各自的比例完全不對,所以在使用這個方法的時候要知道:這個方法隻適用於兩張圖片/多張圖片 寬高比例相同或者相似的情況。

原本這兩張圖的比例是相似的,但是為瞭理解,上面的例子我把圖1的比例改瞭。

下面展示兩張比例相似的圖拼接的結果:(隻拼接高度相同的情況,寬度相同的情況與這個類似,就不寫瞭)

附代碼: 

import cv2
import numpy as np
#讀圖
img1 = cv2.imread(r"C:\Users\thorne\PycharmProjects\biyesheji\image\3.jpg")
img2 = cv2.imread(r"C:\Users\thorne\PycharmProjects\biyesheji\image\1.jpeg")
#1.設置兩個圖的高相同,然後拼接
#打印瞭解圖1的高:634 和寬:400 (shape方法第一個參數是 高)
print(img1.shape)
#打印瞭解圖2的寬和高:(1000, 667)
print(img2.shape)
#設置圖2的高為:634 resize設置寬和高的第二個參數是 高,圖2的寬自定義,這裡我設置的400
img2 = cv2.resize(img2, (400, 634))
# 高度相同圖像可以橫向水平拼接
imgStackH = np.hstack((img1, img2))
# 在窗口顯示橫向拼接圖像 imgStackH
cv2.imshow("DemoStackH", imgStackH)
key = cv2.waitKey(0)  # 等待按鍵命令

到此這篇關於python opencv將多個圖放在一個窗口的文章就介紹到這瞭,更多相關python opencv多個圖放在一個窗口內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: