3 回答
![?](http://img1.sycdn.imooc.com/533e4d00000171e602000200-100-100.jpg)
TA贡献1809条经验 获得超8个赞
有多种方法可以做到这一点。一种可能的方法是利用PIL(Pillow)
库:
from PIL import Image
import matplotlib.pyplot as plt
picture = Image.open('google.jpg')
grayscale_pic = picture.convert('LA')
grayscale_pic.save('grayscale.png')
fig,ax = plt.subplots(nrows=1, ncols=2)
plt.subplot(1,2,1)
plt.imshow(picture)
plt.subplot(1,2,2)
plt.imshow(grayscale_pic)
plt.show()
输出:
![?](http://img1.sycdn.imooc.com/545847aa0001063202200220-100-100.jpg)
TA贡献1828条经验 获得超13个赞
opencv
您可以使用以下命令将普通图像转换为灰度图像:
import cv2 gray = cv2.cvtColor(picture,cv2.COLOR_RGB2GRAY)
如果你numpy
更喜欢opencv
,那么你可以使用这个:
gray = np.dot(picture[...,:3], [0.2989, 0.5870, 0.1140])
![?](http://img1.sycdn.imooc.com/545865890001495702200220-100-100.jpg)
TA贡献2036条经验 获得超8个赞
您可以与权重一起使用matplotlib:
import numpy as np
import matplotlib.pyplot as plt
an_image = plt.imread('google.png')
rgb_weights = [0.2989, 0.5870, 0.1140]
grayscale_image = np.dot(an_image[..., :3], rgb_weights)
plt.axis('off')
plt.imshow(grayscale_image, cmap=plt.get_cmap("gray"), aspect='auto')
plt.show()
输出:
如果删除aspect='auto'
参数:
或者你可以使用opencv
import cv2
an_image = cv2.imread("google.png")
grey_image = cv2.cvtColor(an_image, cv2.COLOR_BGR2GRAY)
或者你可以使用PIL图书馆
from PIL import Image
img = Image.open('google.png').convert('LA')
LA模式为 L(8 位像素,黑白),带有 ALPHA 设计用于 .gif 和 .png。如果您的图像是 .jpeg,请使用L.
输出:
添加回答
举报