python使用matplotlib顯示圖像失真的解決方案
在python顯示圖象時(shí),我們用matplotlib模塊時(shí)會(huì)遇到圖像色彩失真問題,究竟是什么原因呢,下面就來看看究竟。
待顯示圖像為:import cv2from matplotlib import pyplot as pltimg = 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 axisplt.show()上面簡單的代碼運(yùn)行結(jié)果為:
我們發(fā)現(xiàn)這個(gè)圖像雖然顯示出來了,但是與原圖像在顏色上的差距還是挺大的,本來一個(gè)白胖小子被顯示地陰陽怪氣的,這肯定不像話了。那么我們要怎么讓這個(gè)白胖小子用matplotlib模塊完美地顯示出來呢。
請(qǐng)看代碼:import cv2from matplotlib import pyplot as pltimg = 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é)果如下:
我們通過代碼可以發(fā)現(xiàn),只要將通道按照bgr的順序組合,圖片就可以不失真地顯示出來了,這樣我們就明白了上述圖片失真地原因和解決失真的方法。
補(bǔ)充:python plot圖片失真的問題(避免type font 3字體的出現(xiàn))
使用python畫圖時(shí),開始直接使用png保存,沒想到圖片里會(huì)默認(rèn)使用type font 3的字體,導(dǎo)致圖片放入latex編譯后,圖片一放大就不清晰。
于是尋找了好多修改圖片設(shè)置的解決方法即,加入以下三行:
# Switch to Type 1 Fonts. matplotlib.rcParams[’ps.useafm’] = Truematplotlib.rcParams[’pdf.use14corefonts’] = Truematplotlib.rcParams[’text.usetex’] = True
但是我的問題還是沒解決…
以上的設(shè)置是需要的,只是我輸出的圖片以png形式保存導(dǎo)致。所以,最后,我另替換了畫圖的操作以及加了一些包,即,
import matplotlibmatplotlib.use(’PDF’)import matplotlib.pyplot as pltfrom matplotlib.backends.backend_pdf import PdfPagesplt.savefig(’tmp.pdf’, bbox_inches=’tight’)
圖片以pdf輸出,最后輸出的圖片就不會(huì)有type 3 font的問題啦,也就是圖片不管放多大,都可以很清楚!
所以,使用python保存實(shí)驗(yàn)結(jié)果時(shí),優(yōu)選 PDF。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. python excel和yaml文件的讀取封裝2. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問題及解決3. python爬蟲實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊4. Android中的緩存5. 一個(gè)Android項(xiàng)目搞定所有主流架構(gòu)6. Android通用流行框架大全7. Android從按下開機(jī)鍵到啟動(dòng)發(fā)生了什么8. Python中內(nèi)建模塊collections如何使用9. Android組件化和插件化開發(fā)10. Java CountDownLatch應(yīng)用場景代碼實(shí)例
