【问题标题】:How to preserve image transparency when converting to HSV in python?在python中转换为HSV时如何保持图像透明度?
【发布时间】:2022-01-01 22:26:43
【问题描述】:

所以我试图将我的图像从 RGB 转换为 HSV,以便我可以操纵图像的色调。我设法弄清楚如何使用 numpy 和枕头改变色调,但是每次我在透明图像上使用 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 通道?

【问题讨论】:

标签: python python-imaging-library transparency hsv


【解决方案1】:

使用

alpha = im.getchannel('A')

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

im.putalpha(alpha)

【讨论】:

  • 太棒了,成功了!不知道为什么我找不到 image.getchannel() 方法。我用谷歌搜索了一遍,找不到类似的东西。谢谢!
猜你喜欢
  • 2018-12-01
  • 2020-10-06
  • 1970-01-01
  • 2011-05-11
  • 2016-09-11
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多