解決plt.imshow顯示cv2.imread讀取的圖像有色差發(fā)藍(lán)的四種方法問(wèn)題
原圖
一、出現(xiàn)色差代碼
1.1 顯示彩色圖像出現(xiàn)色差
import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('dog.jpg') plt.xticks([]), plt.yticks([]) #隱藏x軸和y軸 plt.imshow(img)
運(yùn)行結(jié)果:
1.2 顯示灰度圖像出現(xiàn)色差
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) plt.xticks([]), plt.yticks([]) # 隱藏x和y軸 plt.imshow(img_gray)
運(yùn)行結(jié)果:
二、解釋原因
2.1 彩色圖像出現(xiàn)色差原因
使用cv2.imread()讀取圖像時(shí),默認(rèn)彩色圖像的三通道順序?yàn)锽、G、R,這與我們所熟知的RGB中的R通道和B通道正好互換位置了。
而使用plt.imshow()函數(shù)卻默認(rèn)顯示圖像的通道順序?yàn)镽、G、B,導(dǎo)致圖像出現(xiàn)色差發(fā)藍(lán)。
2.2 灰度圖像出現(xiàn)色差原因
那么為什么plt.imshow()顯示灰度圖(只有一個(gè)通道)還會(huì)出現(xiàn)色差呢?
上一段講過(guò),這是因?yàn)閜lt.imshow()函數(shù)默認(rèn)顯示三通道圖像,把灰度圖當(dāng)作彩色圖顯示出來(lái)了,所以出現(xiàn)了發(fā)藍(lán)的現(xiàn)象。
三、解決
3.1 解決彩色圖像出現(xiàn)色差問(wèn)題
3.1.1 方法1
img = cv2.imread('dog.jpg') #讀取通道順序?yàn)锽、G、R b,g,r = cv2.split(img) #分別提取B、G、R通道 img_new1 = cv2.merge([r,g,b]) #重新組合為R、G、B plt.xticks([]), plt.yticks([]) # 隱藏x和y軸 plt.imshow(img_new1)
運(yùn)行結(jié)果:
3.1.2 方法2
img = cv2.imread('dog.jpg') #讀取通道順序?yàn)锽、G、R #img[:,:,0]表示圖片的藍(lán)色通道,對(duì)一個(gè)字符串s進(jìn)行翻轉(zhuǎn)用的是s[::-1],同樣img[:,:,::-1]就表示BGR通道翻轉(zhuǎn),變成RGB img_new2 = img[:, :, ::-1] plt.xticks([]), plt.yticks([]) # 隱藏x和y軸 plt.imshow(img_new2)
運(yùn)行結(jié)果:
3.2 解決灰度圖像出現(xiàn)色差問(wèn)題
3.2.1 方法1
img = cv2.imread('dog.jpg') img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #轉(zhuǎn)換為灰度圖 plt.xticks([]), plt.yticks([]) # 隱藏x和y軸 plt.imshow(img_gray,cmap='gray')
運(yùn)行結(jié)果:
3.2.2 方法2
#cv2.imread()第二參數(shù)為0,直接將彩色圖像轉(zhuǎn)換為灰度圖像 img = cv2.imread('dog.jpg',0) plt.xticks([]), plt.yticks([]) # 隱藏x和y軸 plt.imshow(img_gray,cmap='gray')
運(yùn)行結(jié)果:
到此這篇關(guān)于解決plt.imshow顯示cv2.imread讀取的圖像有色差發(fā)藍(lán)的四種方法問(wèn)題的文章就介紹到這了,更多相關(guān)plt.imshow顯示cv2.imread讀取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python正則表達(dá)式的懶惰匹配和貪婪匹配說(shuō)明
這篇文章主要介紹了python正則表達(dá)式的懶惰匹配和貪婪匹配說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07jupyter notebook出現(xiàn)In[*]的問(wèn)題及解決
這篇文章主要介紹了jupyter notebook出現(xiàn)In[*]的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09python3?字符串str和bytes相互轉(zhuǎn)換
這篇文章主要介紹了python3?字符串str和bytes相互轉(zhuǎn)換,在文件傳輸過(guò)程中,通常使用bytes格式的數(shù)據(jù)流,而代碼中通常用str類型,因此str和bytes的相互轉(zhuǎn)換就尤為重要,下文詳細(xì)介紹需要的小伙伴可以參考一下2022-03-03Python 網(wǎng)絡(luò)編程之UDP發(fā)送接收數(shù)據(jù)功能示例【基于socket套接字】
這篇文章主要介紹了Python 網(wǎng)絡(luò)編程之UDP發(fā)送接收數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了Python使用socket套接字實(shí)現(xiàn)基于UDP協(xié)議的數(shù)據(jù)發(fā)送端與接收端相關(guān)操作技巧,需要的朋友可以參考下2019-10-10python append、extend與insert的區(qū)別
這篇文章主要介紹了python append、extend與insert的區(qū)別的相關(guān)資料,初學(xué)者對(duì)這幾個(gè)概念經(jīng)常搞混,這里就幫大家理清楚,需要的朋友可以參考下2016-10-10在windows系統(tǒng)中實(shí)現(xiàn)python3安裝lxml
本文主要給大家簡(jiǎn)單介紹了下在windows以及l(fā)inux系統(tǒng)中使用Python安裝LXML模塊的教程,非常簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2016-03-03Pandas實(shí)現(xiàn)兩個(gè)表的連接功能的方法詳解
這篇文章主要和大家一起說(shuō)說(shuō)pandas的兩個(gè)表的連接技能merge,也就是根據(jù)一個(gè)表的條件去匹配另一個(gè)表的內(nèi)容,感興趣的可以跟隨小編一起學(xué)習(xí)一下2022-09-09python RabbitMQ 使用詳細(xì)介紹(小結(jié))
這篇文章主要介紹了python RabbitMQ 使用詳細(xì)介紹(小結(jié)),詳細(xì)的介紹了RabbitMQ的概念以及使用,對(duì)學(xué)習(xí)RabbitMQ有一定的幫助,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-11-11