【发布时间】:2018-07-25 16:44:21
【问题描述】:
所以我写了这个小代码来尝试将RGB imge 转换为Grayscale 取自这个公认的answer。问题在于,即使我只是重新创建原件,它也显示出与原件毫无相似之处的神秘图像。您认为问题是什么,我们应该如何解决它?然后我想根据给定的数组b将它转换为Grayscale。
这是我的代码:
import matplotlib.image as img
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
a = img.imread('hCeFA.png')
a = a * 255 #Matplotlib gives float values between 0-1
b = a * np.array([0.3, 0.59, 0.11])
b = np.sum(b, axis = 2) / 3 #Grayscale conversion
img1 = Image.fromarray(a, 'RGB')
img1.save('my.png')
img1.show() #Gives a cryptic image
plt.imshow(a/255, interpolation='nearest') #Works fine
plt.show()
【问题讨论】:
-
是什么让你觉得
b = a * np.array([0.3, 0.59, 0.11])是灰度转换,你为什么对b什么都不做? -
该教程说将各个颜色通道值乘以这些因子,然后将结果相加以确定灰度值。
-
@user2357112 如果原始图像显示神秘值,灰度图像如何产生不同的结果,我已经尝试过了,它给了我相同的结果..无论如何我更新了问题
-
再说一次,你为什么不实际使用
b做任何事情?
标签: python python-3.x image numpy image-processing