python opencv將多個(gè)圖放在一個(gè)窗口的實(shí)例詳解
編程需求:使用python+opencv對(duì)圖像進(jìn)行處理,把兩張圖放在一起顯示
方法:使用numpy模塊中的水平堆疊或豎直堆疊完成所有圖像的堆疊,最后當(dāng)成一整張圖顯示。
注意:把不同的尺寸(寬和高)的圖片或不同的顏色通道在一起來(lái)展示,會(huì)發(fā)生黑屏,所以要么把兩張圖的高度設(shè)置相同,要么寬度相同。這樣才能正常顯示。
舉個(gè)栗子:
1.只設(shè)置兩張圖的高相同,拼接兩圖,顯示;只設(shè)置兩張圖的寬相同,拼接兩圖,顯示。
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")
#重新設(shè)置圖1的寬和高
img1 = cv2.resize(img1, (400, 400))
#設(shè)置圖2的高為400,與圖1相同,寬自己任意設(shè)置,我這里設(shè)置為200
img2 = cv2.resize(img2, (200, 400))
#設(shè)置圖2的寬為300,與圖1相同,高自己任意設(shè)置,我這里設(shè)置為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) # 等待按鍵命令運(yùn)行結(jié)果:寬度相同時(shí)拼接

高度相同時(shí)拼接

從上面結(jié)果可以看出,雖然兩張圖拼接到了一起,但是各自的比例完全不對(duì),所以在使用這個(gè)方法的時(shí)候要知道:這個(gè)方法只適用于兩張圖片/多張圖片 寬高比例相同或者相似的情況。
原本這兩張圖的比例是相似的,但是為了理解,上面的例子我把圖1的比例改了。
下面展示兩張比例相似的圖拼接的結(jié)果:(只拼接高度相同的情況,寬度相同的情況與這個(gè)類(lèi)似,就不寫(xiě)了)

附代碼:
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.設(shè)置兩個(gè)圖的高相同,然后拼接
#打印了解圖1的高:634 和寬:400 (shape方法第一個(gè)參數(shù)是 高)
print(img1.shape)
#打印了解圖2的寬和高:(1000, 667)
print(img2.shape)
#設(shè)置圖2的高為:634 resize設(shè)置寬和高的第二個(gè)參數(shù)是 高,圖2的寬自定義,這里我設(shè)置的400
img2 = cv2.resize(img2, (400, 634))
# 高度相同圖像可以橫向水平拼接
imgStackH = np.hstack((img1, img2))
# 在窗口顯示橫向拼接圖像 imgStackH
cv2.imshow("DemoStackH", imgStackH)
key = cv2.waitKey(0) # 等待按鍵命令到此這篇關(guān)于python opencv將多個(gè)圖放在一個(gè)窗口的文章就介紹到這了,更多相關(guān)python opencv多個(gè)圖放在一個(gè)窗口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python異步編程入門(mén)之實(shí)現(xiàn)文件批處理的并發(fā)處理方式
本文以Python初級(jí)程序員為對(duì)象,介紹了如何使用asyncio和logging模塊實(shí)現(xiàn)一個(gè)異步批處理文件的并發(fā)處理系統(tǒng),以提高處理大量文件或數(shù)據(jù)時(shí)的效率,其中,通過(guò)配置日志系統(tǒng)記錄處理文件的日志信息,定義AsyncBatchProcessor類(lèi)控制并發(fā)任務(wù)的數(shù)量2024-10-10
Python中round()函數(shù)實(shí)現(xiàn)數(shù)值的四舍五入
這篇文章主要給大家介紹了關(guān)于Python中round()函數(shù)實(shí)現(xiàn)數(shù)值的四舍五入,round()是python自帶的一個(gè)函數(shù),用于數(shù)字的四舍五入,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
python如何創(chuàng)建TCP服務(wù)端和客戶(hù)端
這篇文章主要為大家詳細(xì)介紹了python如何創(chuàng)建TCP服務(wù)端和客戶(hù)端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
PyMySQL實(shí)現(xiàn)增刪查改的簡(jiǎn)單使用
這篇文章主要介紹了PyMySQL實(shí)現(xiàn)增刪查改的簡(jiǎn)單使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Python內(nèi)建模塊struct實(shí)例詳解
這篇文章主要介紹了Python內(nèi)建模塊struct實(shí)例詳解,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
python中利用Future對(duì)象回調(diào)別的函數(shù)示例代碼
最近在學(xué)習(xí)python,所以這篇文章主要給大家介紹了關(guān)于在python中利用Future對(duì)象回調(diào)別的函數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)下吧。2017-09-09
Python操作Excel的10個(gè)必學(xué)腳本分享
Excel表格操作是我們?nèi)粘9ぷ髦胁豢苫蛉钡囊徊糠?而Python憑借其強(qiáng)大的數(shù)據(jù)處理能力,可以極大地提升我們操作Excel的效率,本文將介紹10個(gè)必學(xué)的Python腳本,需要的可以零基礎(chǔ)2025-03-03

