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

Ald*_*rus 3 python transparency hsv python-imaging-library

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

我的代码:

from PIL import Image

img = Image.open("flame.png")
new_img = img.convert("HSV")
new_img.show()
Run Code Online (Sandbox Code Playgroud)

火焰.png 转换后


更新:

因此,我尝试通过创建 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()
Run Code Online (Sandbox Code Playgroud)

这是结果:

结果

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

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

Mar*_*ell 5

使用

alpha = im.getchannel('A')
Run Code Online (Sandbox Code Playgroud)

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

im.putalpha(alpha)
Run Code Online (Sandbox Code Playgroud)