Python:使用提供的调色板将灰度图像转换为 RGB 图像

问题描述 投票:0回答:1

我遇到了一个问题。

我想用我的字典调色板将许多灰度图像转换为

RGBA
,其中
greyScale value = (r,g,b)
(添加透明度
0
,其中像素为
0
)。

我写了一些代码,但需要

~0.3sec
才能结束一次转换。 有没有更快的方法来获得更好的性能?

谢谢<3

My code

My Dict:

python image-processing python-imaging-library rgb grayscale
1个回答
0
投票

性能取决于您的图像分辨率。但你可以像这样使用 Numpy 来处理这种情况。

import numpy as np
from PIL import Image

def grayscale_to_rgba_optimized(image, palette):
    """Converts a grayscale image to RGBA using a dictionary palette efficiently.

    Args:
        image: A 2D grayscale image array.
        palette: A dictionary mapping grayscale values to RGBA tuples.

    Returns:
        A 3D RGBA image array.
    """

    lookup_array = np.array([palette.get(i, (0, 0, 0, 0)) for i in range(256)])
    rgba_image = lookup_array[image]
    return rgba_image

colors = {
    -35: (243, 243, 243),
    -30: (207, 207, 207),
    ......
    90: (77, 77, 77)
}

gray_img = Image.open('Your_Image_Path.png').convert('L')
gray_array = np.array(gray_img)

rgba_image = grayscale_to_rgba_optimized(gray_array, colors)

# Save the result as a PNG image (transparency will be preserved)
result_image = Image.fromarray(rgba_image, 'RGBA')
result_image.save("output_image.png")
© www.soinside.com 2019 - 2024. All rights reserved.