溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么使用matplotlib顯示圖像失真的解決方案

發(fā)布時間:2021-04-26 14:12:48 來源:億速云 閱讀:336 作者:小新 欄目:開發(fā)技術

這篇文章給大家分享的是有關python怎么使用matplotlib顯示圖像失真的解決方案的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Python主要用來做什么

Python主要應用于:1、Web開發(fā);2、數據科學研究;3、網絡爬蟲;4、嵌入式應用開發(fā);5、游戲開發(fā);6、桌面應用開發(fā)。

在python顯示圖象時,我們用matplotlib模塊時會遇到圖像色彩失真問題,究竟是什么原因呢,下面就來看看究竟。

待顯示圖像為:

python怎么使用matplotlib顯示圖像失真的解決方案

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()

上面簡單的代碼運行結果為:

python怎么使用matplotlib顯示圖像失真的解決方案

我們發(fā)現這個圖像雖然顯示出來了,但是與原圖像在顏色上的差距還是挺大的,本來一個白胖小子被顯示地陰陽怪氣的,這肯定不像話了。那么我們要怎么讓這個白胖小子用matplotlib模塊完美地顯示出來呢。

請看代碼:

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()

上述代碼運行結果如下:

python怎么使用matplotlib顯示圖像失真的解決方案

我們通過代碼可以發(fā)現,只要將通道按照bgr的順序組合,圖片就可以不失真地顯示出來了,這樣我們就明白了上述圖片失真地原因和解決失真的方法。

補充:python plot圖片失真的問題(避免type font 3字體的出現)

使用python畫圖時,開始直接使用png保存,沒想到圖片里會默認使用type font 3的字體,導致圖片放入latex編譯后,圖片一放大就不清晰。

于是尋找了好多修改圖片設置的解決方法

即,加入以下三行:

# Switch to Type 1 Fonts. 
matplotlib.rcParams['ps.useafm'] = True
matplotlib.rcParams['pdf.use14corefonts'] = True
matplotlib.rcParams['text.usetex'] = True

但是我的問題還是沒解決…

以上的設置是需要的,只是我輸出的圖片以png形式保存導致。所以,最后,我另替換了畫圖的操作以及加了一些包,即,

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輸出,最后輸出的圖片就不會有type 3 font的問題啦,也就是圖片不管放多大,都可以很清楚!

所以,使用python保存實驗結果時,優(yōu)選 PDF。

感謝各位的閱讀!關于“python怎么使用matplotlib顯示圖像失真的解決方案”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI