Python OpenCV一個(gè)窗口中顯示多幅圖像
在使用opencv顯示圖像時(shí),有時(shí)候需要顯示多張圖像,就會(huì)出現(xiàn)多個(gè)窗口,顯得冗余,用戶不好操作。這時(shí)候就想著能不能將這些圖像在一個(gè)窗口中顯示。
方法1:創(chuàng)建畫布,將所有圖像復(fù)制到畫布中,最后顯示畫布
# 方法1:創(chuàng)建一個(gè)畫布,將所有圖像復(fù)制到畫布中,最后顯示畫布
h, w, _ = img.shape
img_list = [img, invert, gaussianBlur, flip] # 圖像列表
four_view = np.zeros((h * 2 + 10, w * 2 + 10, 3), np.uint8) # 創(chuàng)建空白圖像
four_view[:, :] = 255 # 給所有通道的像素值賦值255
for i in range(len(img_list)):
row = i // 2
col = i % 2
print(row, col)
# 將小圖像復(fù)制到大畫布上。
np.copyto(four_view[(h + 10) * row:h * (row + 1) + 10 * row, (w + 10) * col:w * (col + 1) + 10 * col],
img_list[i])
cv.imshow('result', four_view)
方法2:使用numpy模塊中的水平堆疊和豎直堆疊完成所有圖像的堆疊,最后當(dāng)成一整張圖顯示。
主要用到的兩個(gè)函數(shù)有:np.hstack()和np.vstack()
水平堆疊函數(shù)hstack(tup):ndarrays 序列除了第二個(gè)軸外,數(shù)組必須具有相同的形狀,除了可以是任意長(zhǎng)度的一維數(shù)組。豎直堆疊函數(shù)np.vstack():ndarrays 序列除了第一個(gè)軸外,數(shù)組必須具有相同的形狀。一維數(shù)組必須具有相同的長(zhǎng)度。
# 方法2:使用numpy的水平堆疊和豎直堆疊完成所有圖像的堆疊,最后一起顯示
vs1 = np.hstack((img, invert)) # 水平堆疊
vs2 = np.hstack((gaussianBlur, flip)) # 水平堆疊
result = np.vstack((vs1, vs2)) # 豎直堆疊
整個(gè)項(xiàng)目的完整代碼:
# -*-coding:utf-8-*-
"""
File Name: color_operation.py
Program IDE: PyCharm
Create File By Author: Hong
"""
import cv2 as cv
import numpy as np
def image_display(image_path: str):
"""
多個(gè)圖像在一個(gè)窗口內(nèi)顯示
:param image_path: 傳入圖像路徑
:return:
"""
img = cv.imread(image_path, cv.IMREAD_COLOR)
# 顏色取反
invert = cv.bitwise_not(img)
# 高斯模糊
gaussianBlur = cv.GaussianBlur(img, (0, 0), 10)
# 鏡像
flip = cv.flip(img, 1) # 0表示繞x軸翻轉(zhuǎn);1表示繞y軸翻轉(zhuǎn);-1表示繞兩個(gè)軸翻轉(zhuǎn)
# 方法1:創(chuàng)建一個(gè)畫布,將所有圖像復(fù)制到畫布中,最后顯示畫布
h, w, _ = img.shape
img_list = [img, invert, gaussianBlur, flip]
four_view = np.zeros((h * 2 + 10, w * 2 + 10, 3), np.uint8)
four_view[:, :] = 255 # 給所有通道的像素值賦值255
for i in range(len(img_list)):
row = i // 2
col = i % 2
print(row, col)
# 將小圖像復(fù)制到大畫布上。
np.copyto(four_view[(h + 10) * row:h * (row + 1) + 10 * row, (w + 10) * col:w * (col + 1) + 10 * col],
img_list[i])
cv.imshow('result', four_view)
# 方法2:使用numpy的水平堆疊和豎直堆疊完成所有圖像的堆疊,最后一起顯示
vs1 = np.hstack((img, invert)) # 水平堆疊
vs2 = np.hstack((gaussianBlur, flip)) # 水平堆疊
result = np.vstack((vs1, vs2)) # 豎直堆疊
# 初略解決imshow()中文亂碼顯示的問(wèn)題。不能完全解決,有些中文無(wú)法顯示。這是python-opencv的弊端
def zh_ch(string):
return string.encode('gbk').decode(errors='ignore')
cv.imshow(zh_ch('圖片'), result)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == '__main__':
path = 'images/daiyutong.png'
image_display(path)
效果展示:

到此這篇關(guān)于Python OpenCV一個(gè)窗口中顯示多幅圖像的文章就介紹到這了,更多相關(guān)Python OpenCV圖像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pandas的read_csv函數(shù)參數(shù)分析詳解
這篇文章主要介紹了Pandas的read_csv函數(shù)參數(shù)分析詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python常見(jiàn)加密模塊用法分析【MD5,sha,crypt模塊】
這篇文章主要介紹了Python常見(jiàn)加密模塊用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了MD5,sha與crypt模塊加密的相關(guān)實(shí)現(xiàn)方法與操作技巧,需要的朋友可以參考下2017-05-05
python用requests實(shí)現(xiàn)http請(qǐng)求代碼實(shí)例
這篇文章主要介紹了python用requests實(shí)現(xiàn)http請(qǐng)求過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Python開(kāi)發(fā)之利用re模塊去除代碼塊注釋
Python的re模塊主要是正則表達(dá)式的操作函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python開(kāi)發(fā)之利用re模塊去除代碼塊注釋的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Python?hashlib模塊與哈希算法保護(hù)數(shù)據(jù)完整性教程
hashlib模塊為Python提供了一種簡(jiǎn)便的方式來(lái)使用各種哈希算法,如MD5、SHA-1、SHA-256等,哈希函數(shù)廣泛用于密碼學(xué)、數(shù)據(jù)完整性驗(yàn)證和安全存儲(chǔ)等領(lǐng)域2024-01-01
解決python3報(bào)錯(cuò)之takes?1?positional?argument?but?2?were?gi
這篇文章主要介紹了解決python3報(bào)錯(cuò)之takes?1?positional?argument?but?2?were?given問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
python實(shí)現(xiàn)秒殺商品的微信自動(dòng)提醒功能(代碼詳解)
這篇文章主要介紹了python實(shí)現(xiàn)秒殺商品的微信自動(dòng)提醒功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Python利用pandas處理Excel數(shù)據(jù)的應(yīng)用詳解
這篇文章主要介紹了Python利用pandas處理Excel數(shù)據(jù)的應(yīng)用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
解決Django中checkbox復(fù)選框的傳值問(wèn)題
這篇文章主要介紹了解決Django中checkbox復(fù)選框的傳值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03

