在 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)
所以我正在尝试将我的图像从 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)