python 基于PIL的三色照相

wtlkbnrh  于 2022-12-28  发布在  Python
关注(0)|答案(1)|浏览(129)

我试着用一种简单的方式来模仿(=〉没有任何I.A.)the old trichromy process to colorize B&W photographs

这是开始的图片:

我复制了这张图片在一个红色,绿色和蓝色的版本使用枕头:

每个过滤的图片都有一个减少的不透明度(我使用了putalpha(round(255/3)),这些都是有效的PNG文件。
然后,我尝试合并这三个示例,但最后没有颜色。在for循环后使用paste或alpha_composite的结果是相同的:

是我太乐观了,还是我错过了实现这一目标的一些东西?

    • 编辑**

这是滤镜颜色函数,它当然很重,因为它将图片中每个像素的红、绿、蓝级别与滤镜颜色的红、绿、蓝级别进行比较,但是,仍然:

def color_photo(file:str,color:tuple,def_file_name:str):
    """
        This function colorizes a picture based on a RGB color.
        Example : put a red filter on a B&W photo.
    """
    try:
        format_file = file.split(".")[-1]
        img = Image.open(file).convert("RGB")
        pixels = img.load()
        res = img.info["dpi"]
        w, h = img.size
        for px in range(w):
            for py in range(h):
                l_col = [int(new_level) if int(new_level)<int(old_level) else int(old_level) for new_level,old_level in zip(color,img.getpixel((px,py)))]
                pixels[px,py] = tuple(l_col)
        img.save(def_file_name+"."+format_file,dpi = res, subsampling = 0, quality = 100, optimize = True)
    except:
        print("You must do a mistake handling file names and/or the tuples of RGB's color instead of something like (234,125,89)")
l5tcr1uw

l5tcr1uw1#

三色处理从三个不同的图像或输入开始。一个是物体反射的光通过绿色滤光片,第二个通过橙子滤光片,第三个通过绿色滤光片。
你没有,你只有一个单一的输入图像,尽管它可以用RGB来表示,但是红、绿色、蓝通道都是相同的。
你根本没有任何可用的颜色信息来构建、分析或创造出与原作相似的图像。你所做的一切都纯粹是猜测。想象一下,看着图像中的每个像素,然后说“嗯,这个像素的灰度值是146,那么产生这个结果的三个R、G和B值是什么?"你怎么可能知道呢?

相关问题