【发布时间】:2022-01-20 08:09:43
【问题描述】:
尝试在 dash 应用中对图像执行 gamma 校正。但是经过我的功能后,原始彩色图像变成了灰度。我使用 Pillow Image.new("P", ...) 表示颜色,而不是用于灰度的“L”。如果我使用Image.new("RGB",...),则返回的图像是红色的。请帮忙。
def gamma_correct(gamma, url):
im = Image.open(requests.get(url, stream=True).raw)
gamma1 = gamma
row = im.size[0]
col = im.size[1]
result_img1 = Image.new("RGB", (row, col))
for x in range(1 , row):
for y in range(1, col):
r = pow(im.getpixel((x,y))[0]/255, (1/gamma1))*255
g = pow(im.getpixel((x,y))[1]/255, (1/gamma1))*255
b = pow(im.getpixel((x,y))[2]/255, (1/gamma1))*255
result_img1.putpixel((x,y)[0], int(r))
result_img1.putpixel((x,y)[1], int(g))
result_img1.putpixel((x,y)[2], int(b))
【问题讨论】:
-
P表示调色板。我怀疑你想要那个。你把指数弄混了。并且你有循环接触单个像素,当这可以使用 numpy 在一个表达式中表达时 -
我尝试了几乎所有可用的模式,但无法让它返回经过伽马校正的原始彩色图像。它只返回灰度版本。
-
内循环体只触及每个像素的[0],也就是红色分量。并且您的循环从 1 开始,而像素坐标从 0 开始。所有其他的东西(请求、图形、...)都会分散注意力。编写一个获取图像并返回图像的函数,除了改变伽玛之外什么都不做。
-
我更新了我的代码。这是你的意思吗?
-
是的,我就是这个意思。
标签: python image-processing python-imaging-library plotly-dash