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)
更新:
因此,我尝试通过创建 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 通道?
使用
alpha = im.getchannel('A')
Run Code Online (Sandbox Code Playgroud)
获取 Alpha 通道。然后进行处理并恢复 alpha 通道:
im.putalpha(alpha)
Run Code Online (Sandbox Code Playgroud)