【发布时间】:2023-03-02 22:42:01
【问题描述】:
我想知道是否可以通过修改图像的 RGB、HSV(或类似)值来修改图像的对比度。
我目前正在执行以下操作来处理亮度、饱和度和色调(在 python 中):
import numpy as np
from PIL import Image as img
import colorsys as cs
#Fix colorsys rgb_to_hsv function
#cs.rgb_to_hsv only works on arrays of shape: [112, 112,255] and non n-dimensional arrays
rgb_to_hsv = np.vectorize(cs.rgb_to_hsv)
hsv_to_rgb = np.vectorize(cs.hsv_to_rgb)
def luminance_edit(a, h, s, new_v):
#Edits V - Luminance
#Changes RGB based on new luminance value
r, g, b = hsv_to_rgb(h, s, new_v)
#Merges R,G,B,A values to form new array
arr = np.dstack((r, g, b, a))
return arr
我有一个单独的函数来处理来回 RGB 和 HSV 的转换。 A是alpha通道,h是色调,s是饱和度,new_v是新的V值(亮度)。
是否可以根据这些值编辑对比度,还是我遗漏了什么?
编辑: 我有一个单独的函数可以导入图像、提取 RGBA 值并将它们转换为 HSL/HSV。让我们调用这个函数 x。
在提供的代码(函数 y)中,我们获取某些图像的色调(h)、饱和度(s)、亮度(v)和 alpha 通道(a)——函数 x 提供的 HSL 值。
代码编辑 V 值或亮度。它实际上并没有编辑对比度,它只是我想要实现的一个例子。使用上述数据(HSL/HSV/RGB)或类似数据,我想知道是否可以编辑图像的对比度。
【问题讨论】:
-
您的代码似乎没有加载任何图像或调用您的
luminance_edit()函数?你的描述说你打算用亮度和饱和度来“混乱”,这根本没有多大帮助。问题是什么,您试图实现的不完整代码是什么,哪些方面不起作用? -
我的回答解决了你的问题吗?如果是这样,请考虑接受它作为您的答案 - 通过单击计票旁边的空心对勾/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢。 meta.stackexchange.com/questions/5234/…
标签: python image image-processing rgb hsl