首先,介紹第一種方法, 使用 PIL 庫, PIL庫是一種python語言常用的一個圖形處理庫。
關於 PIL 庫的安裝本文就不介紹了。
from PIL import Image I = Image.open('C:\\Users\\Administrator\\Desktop\\照片\\timg.jpg') I.show() L = I.convert('L') L.show()
L.save('C:\\Users\\Administrator\\Desktop\\照片\\timg2.jpg')
timg.jpg 文件:
灰度圖:
第二種, 便是使用 numpy庫 來編寫自己的轉化函數:
import matplotlib.image as mpimg import matplotlib.pyplot as plt def rgb2gray(rgb): r, g, b=rgb[:, :, 0], rgb[:, :, 1], rgb[:, :, 2] gray=0.2989*r + 0.5870*g + 0.1140*b return gray img=mpimg.imread('C:\\Users\\Administrator\\Desktop\\照片\\timg.jpg') plt.imshow(img) plt.show() img2=rgb2gray(img) plt.imshow(img2) plt.show()
結果展示:
采用第二種方法展示的結果圖十分的怪異,應該是matplotlib.plot 展示一個通道圖片時候需要額外設置的緣故吧,下面找到了一個修正的代碼,如下:
import matplotlib.image as mpimg import matplotlib.pyplot as plt import numpy as np def rgb2gray(rgb): return np.dot(rgb[..., :3], [0.2989, 0.5870, 0.1140]) img=mpimg.imread('C:\\Users\\Administrator\\Desktop\\照片\\timg.jpg') plt.imshow(img) plt.show() img2=rgb2gray(img) plt.imshow(img2, cmap=plt.get_cmap('gray')) plt.show()
結果圖:
發現這次的效果還是可以的。