python使用matplotlib顯示圖像失真的解決方案
在python顯示圖象時(shí),我們用matplotlib模塊時(shí)會(huì)遇到圖像色彩失真問(wèn)題,究竟是什么原因呢,下面就來(lái)看看究竟。
待顯示圖像為:

import cv2
from matplotlib import pyplot as plt
img = cv2.imread('demo_2.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
上面簡(jiǎn)單的代碼運(yùn)行結(jié)果為:

我們發(fā)現(xiàn)這個(gè)圖像雖然顯示出來(lái)了,但是與原圖像在顏色上的差距還是挺大的,本來(lái)一個(gè)白胖小子被顯示地陰陽(yáng)怪氣的,這肯定不像話(huà)了。那么我們要怎么讓這個(gè)白胖小子用matplotlib模塊完美地顯示出來(lái)呢。
請(qǐng)看代碼:
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('demo_2.jpg', cv2.IMREAD_ANYCOLOR)
b,g,r = cv2.split(img)
img2 = cv2.merge([r, g, b])
plt.subplot(121)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([])
plt.yticks([])
plt.subplot(122)
plt.imshow(img2, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([])
plt.yticks([])
plt.show()
上述代碼運(yùn)行結(jié)果如下:

我們通過(guò)代碼可以發(fā)現(xiàn),只要將通道按照bgr的順序組合,圖片就可以不失真地顯示出來(lái)了,這樣我們就明白了上述圖片失真地原因和解決失真的方法。
補(bǔ)充:python plot圖片失真的問(wèn)題(避免type font 3字體的出現(xiàn))
使用python畫(huà)圖時(shí),開(kāi)始直接使用png保存,沒(méi)想到圖片里會(huì)默認(rèn)使用type font 3的字體,導(dǎo)致圖片放入latex編譯后,圖片一放大就不清晰。
于是尋找了好多修改圖片設(shè)置的解決方法
即,加入以下三行:
# Switch to Type 1 Fonts. matplotlib.rcParams['ps.useafm'] = True matplotlib.rcParams['pdf.use14corefonts'] = True matplotlib.rcParams['text.usetex'] = True
但是我的問(wèn)題還是沒(méi)解決…
以上的設(shè)置是需要的,只是我輸出的圖片以png形式保存導(dǎo)致。所以,最后,我另替換了畫(huà)圖的操作以及加了一些包,即,
import matplotlib
matplotlib.use('PDF')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
plt.savefig('tmp.pdf', bbox_inches='tight')
圖片以pdf輸出,最后輸出的圖片就不會(huì)有type 3 font的問(wèn)題啦,也就是圖片不管放多大,都可以很清楚!
所以,使用python保存實(shí)驗(yàn)結(jié)果時(shí),優(yōu)選 PDF。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入
這篇文章主要介紹了python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入的相關(guān)資料,需要的朋友可以參考下2016-04-04
利用python-docx模塊寫(xiě)批量生日邀請(qǐng)函
這篇文章主要為大家詳細(xì)介紹了利用python-docx模塊批量生日邀請(qǐng)函,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
python語(yǔ)法之通過(guò)value找key問(wèn)題
這篇文章主要介紹了python語(yǔ)法之通過(guò)value找key問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
pytorch加載語(yǔ)音類(lèi)自定義數(shù)據(jù)集的方法教程
這篇文章主要給大家介紹了關(guān)于pytorch加載語(yǔ)音類(lèi)自定義數(shù)據(jù)集的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
python中pymysql的executemany使用方式
這篇文章主要介紹了python中pymysql的executemany使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
導(dǎo)致python中import錯(cuò)誤的原因是什么
在本篇文章里小編給大家整理了關(guān)于python的import錯(cuò)誤原因以及相關(guān)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-07-07
python二進(jìn)制讀寫(xiě)及特殊碼同步實(shí)現(xiàn)詳解
這篇文章主要介紹了python二進(jìn)制讀寫(xiě)及特殊碼同步實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10

