如何在Python中更改图像的HSV值?

3
我能将图像从RGB颜色空间转换为HSV颜色空间,但如何使用HSV比例尺中概述的值进行操作呢?请参阅 PIL文档
img = Image.open("assets/image.png")
img = img.convert('HSV')
img.show()

嗨,迈克尔,你想将像素的各个值更改为您选择的任意值吗?如果是这样,您需要使用 Image.putpixel 函数,在其中传递像素的坐标和您想要使用的值。https://pillow.readthedocs.org/en/3.1.x/reference/Image.html - BenJ
嗨@BenJ,我可能混淆了HSV和HSL,但我想像在PhotoShop中一样处理图像,并根据HSV/HSL值进行操作。 - Michael
我不完全清楚你想要实现什么,但如果你需要改变像素值,putpixel 是一个很好的选择。这份文档 https://pillow.readthedocs.org/en/3.1.x/reference/Image.html 非常有用,可能包含你所需要的内容。 - BenJ
2个回答

2
你可以将图像转换为NumPy数组并从那里进行操作。
例如,要改变色调:
```python import cv2 import numpy as np # 读取图像 img = cv2.imread('image.jpg')
# 将BGR格式转换为HSV格式 hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 改变色调 hsv_img[:, :, 0] += 10
# 将HSV格式转换为BGR格式 new_img = cv2.cvtColor(hsv_img, cv2.COLOR_HSV2BGR) ```
import numpy as np
from PIL import image

def hue_shift(img, amount):
    hsv_img = img.convert('HSV')
    hsv = np.array(hsv_img)
    hsv[..., 0] = (hsv[..., 0]+amount) % 360
    new_img = Image.fromarray(hsv, 'HSV')
    return new_img.convert('RGB')

0
If you get HSV images, you can use opencv library.

import argparse.
import cv2
ap = argparse.ArgumentParser()
ap.add_argument("-i", "-image", required = True, help = "Path to the image");
args = vars(ap.parse_args());
image = cv2.imread(args["image"]);
hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)

如果您能向我们解释您的代码为什么以及如何解决OP的问题,我相信这将有助于社区。 - Simas Joneliunas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接