为了账号安全,请及时绑定邮箱和手机立即绑定

在python中将图像转为灰度

在python中将图像转为灰度

蝴蝶不菲 2023-08-08 16:36:11
我是张量流和 keras 的新手,我正在尝试为街景门牌号码 (SVHN) 数据集创建 CNN 模型。数据集包含彩色图像,我想将它们转换为灰度图像。我在网上发现了一些代码,声称他们正在将图像转换为灰度,但它只是改变颜色。人们正在阅读带有灰色色彩图的第二张图像。有什么办法可以真正将这张图像变成灰度图吗?(我不知道如何用这种编程语言处理图像。如果这是一个愚蠢的问题,请原谅我并提供一个简短的解释。)我在下面提供了图像和代码,我将不胜感激。代码:import matplotlibimport matplotlib.pyplot as pltimport numpy as np#Read picture:picture = plt.imread('google.jpg')print("google logo's shape is: ",picture.shape) #(500, 500, 3)#saving picture as an np array:pic_array = np.array(picture)#Turning image to grayscalegrayscale_pic = np.expand_dims(np.dot(pic_array[...,:3],[0.299, 0.587, 0.144]),axis = 0)#Dimensions shifted, (probly my mistake):grayscale_pic = np.moveaxis(grayscale_pic, 0, -1)print("shape of grayscale pic = ", grayscale_pic.shape) # (500, 500, 1)plt.imshow(picture)         #Figure_1plt.show()plt.imshow(grayscale_pic)   #Figure_2plt.show()
查看完整描述

3 回答

?
海绵宝宝撒

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

输出:

https://img3.sycdn.imooc.com/64d1feb00001735010640279.jpg

查看完整回答
反对 回复 2023-08-08
?
慕田峪7331174

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


查看完整回答
反对 回复 2023-08-08
?
慕桂英3389331

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

输出:

https://img1.sycdn.imooc.com//64d1fec50001f29806360474.jpg

如果删除aspect='auto'参数:

https://img1.sycdn.imooc.com//64d1fed700017f0606250464.jpg

或者你可以使用opencv

import cv2


an_image = cv2.imread("google.png")

grey_image = cv2.cvtColor(an_image, cv2.COLOR_BGR2GRAY)

https://img1.sycdn.imooc.com//64d1fee70001948003750371.jpg

或者你可以使用PIL图书馆

from PIL import Image

img = Image.open('google.png').convert('LA')

LA模式为 L(8 位像素,黑白),带有 ALPHA 设计用于 .gif 和 .png。如果您的图像是 .jpeg,请使用L.


输出:

https://img1.sycdn.imooc.com//64d1fef60001305d03820383.jpg

查看完整回答
反对 回复 2023-08-08
  • 3 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信