首先,介绍第一种方法, 使用 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()
结果图:
发现这次的效果还是可以的。
原文地址:https://www.cnblogs.com/devilmaycry812839668/p/10128001.html
时间: 2024-10-08 16:33:37