如何在Python中将亮度从一个图像应用到另一个图像

如何在Python中将亮度从一个图像应用到另一个图像,python,numpy,colors,python-imaging-library,cv2,Python,Numpy,Colors,Python Imaging Library,Cv2,我正在尝试使用一个有3种颜色的图像和一个灰度图像来制作纹理 这是原始图像: 这是灰度柏林噪声图像: 我需要做的是将原始图像的亮度应用于灰度图像,这样柏林噪波图像中最暗和最亮的亮度不再是100%黑色(0)和100%白色(1),而是取自原始图像。然后,将灰度柏林噪声图像的新亮度映射应用回原始图像 这就是我所尝试的: from PIL import Image alpha = 0.5 im = Image.open(filename1).convert("RGBA") new_img = Ima

我正在尝试使用一个有3种颜色的图像和一个灰度图像来制作纹理

这是原始图像:

这是灰度柏林噪声图像:

我需要做的是将原始图像的亮度应用于灰度图像,这样柏林噪波图像中最暗和最亮的亮度不再是100%黑色(0)和100%白色(1),而是取自原始图像。然后,将灰度柏林噪声图像的新亮度映射应用回原始图像

这就是我所尝试的:

from PIL import Image

alpha = 0.5
im = Image.open(filename1).convert("RGBA")
new_img = Image.open(filename2).convert("RGBA")
new_img = Image.blend(im, new_img, alpha)
new_img.save("foo.png","PNG")
这是我得到的输出:

这是错误的,但想象一下暗橙色和浅橙色以及明亮的颜色与灰度图像具有相同的梯度,但没有100%的黑色或100%的白色

我认为我需要:

  • 将原始图像转换为
    HSV
    (正确地说,我尝试了
    colorsys
    matplotlib
    中的一些函数,它们给了我奇怪的数字

  • 从原始图像中获取最高和最低
    V

  • 将灰度图像转换为HSV

  • 使用原始
    HSV
    图像中的
    V
    值对灰度
    HSV
    进行变换或规范化(我想这就是它的名称)

  • 将所有原始
    V
    值与新的变换/标准化灰度
    V
    值重新映射


  • 我不太懂Python,但也许可以尝试将int转换为float或double。也许可以

    也许你想编辑你的问题,使其更清楚预期的结果是什么。此外,清晰的问题描述可能会有所帮助,在多大程度上建议的步骤没有给你期望的结果。另外,让这对其他人来说是可复制的嗯,看。