我有一个RGB图像,我想将其转换为灰度图像,这样我就可以为每个像素提供一个数字(可能在0和1之间)。这给了我一个矩阵,其尺寸等于图像像素的尺寸。然后我想对这个矩阵进行一些操作,并从这个被操纵的矩阵中生成一个新的灰度图像。我怎么能这样做?
答案 0 :(得分:15)
我经常将图像用作NumPy数组 - 我这样做:
import numpy as np
from PIL import Image
x=Image.open('im1.jpg','r')
x=x.convert('L') #makes it greyscale
y=np.asarray(x.getdata(),dtype=np.float64).reshape((x.size[1],x.size[0]))
<manipulate matrix y...>
y=np.asarray(y,dtype=np.uint8) #if values still in range 0-255!
w=Image.fromarray(y,mode='L')
w.save('out.jpg')
如果操作后数组值y不再在0-255范围内,则可以升级到16位TIFF或只是重新缩放。
-Aldo