我正在尝试使用specific gamma corrected grayscale implementation-Gleam将图像像素转换为灰度。如何使用PIL python手动执行此操作?在
def tau_gamma_correct(pixel_channel):
pixel_channel = pixel_channel**(1/2.2)
return pixel_channel
#@param: rgb
#@result: returns grayscale value
def gleam(rgb):
#convert rgb tuple to list
rgblist = list(rgb)
#gamma correct each rgb channel
rgblist[0] = tau_gamma_correct(rgblist[0])
rgblist[1] = tau_gamma_correct(rgblist[1])
rgblist[2] = tau_gamma_correct(rgblist[2])
grayscale = 1/3*(rgblist[0] + rgblist[1] + rgblist[2])
return grayscale
# get a glob list of jpg filenames
files = glob.glob('*.jpg')
for file in files:
file = open(file)
filename = file.name
image = Image.open(file)
pix = image.load()
width, height = image.size
#print(width,height)
for x in range(0, width):
for y in range(0, height):
rgb = pix[x,y]
#print(rgb)
# calc new pixel value and set to pixel
image.mode = 'L'
pix[x,y] = gleam(rgb)
image.save(filename + 'gray.gleam'+'.jpg')
file.close()
SystemError: new style getargs format but argument is not a tuple
我想它还在期待rgb元组。在
看到
SystemError: new style getargs format but argument is not a tuple
错误,您似乎需要返回一个元组,它表示为:因此,我们将
^{pr2}$gleam()
函数编辑为:请记住,在返回单个元素元组时,需要表示为:
这是由于}
(4) == 4
但是{我发现我可以建立另一个形象:
问题是} 制作一个新副本。在
image.mode = 'L'
实际上并没有改变图像的类型,它只是改变了属性,所以不再准确。要更改图像的模式,您需要用^{一旦图像处于灰度模式,就不再需要像素值的元组了。在
相关问题 更多 >
编程相关推荐