在 python 中转换为 HSV 时如何保持图像透明度?

How to preserve image transparency when converting to HSV in python?

所以我正在尝试将我的图像从 RGB 转换为 HSV,以便我可以操纵图像的色调。我设法弄清楚如何使用 numpy 和 pillow 更改色调,但每次我在透明图像上使用 image.convert() 时,它都会消除透明度并影响图像质量。如何在将图像转换为 HSV 并再次转换时保持图像的透明度?

我的代码:

from PIL import Image

img = Image.open("flame.png")
new_img = img.convert("HSV")
new_img.show()


更新:

所以我试图通过创建和 alpha 蒙版并将其应用于转换后的图像来保留 alpha 通道。这是修改后的代码:

import numpy as np
from PIL import Image
import cv2

alpha = cv2.imread("traits/Background/background.png", cv2.IMREAD_UNCHANGED)
ret, mask = cv2.threshold(alpha[:, :, 3], 0, 255, cv2.THRESH_BINARY)
channel = Image.fromarray(mask)

img = Image.open("traits/Background/background.png")
new_img = img.convert("HSV")
new_img = new_img.convert("RGBA")
new_img.putalpha(channel)
new_img.show()

这是结果:

它现在有一些透明度,但看起来仍然很糟糕。仍然没有保留原来的透明度。

您将如何以保留原始质量的方式提取和存储 alpha 通道?

使用

alpha = im.getchannel('A')

获取 Alpha 通道。然后进行处理,然后恢复 alpha 通道:

im.putalpha(alpha)