使用Python PIL,我正在尝试调整给定图像的色调.
我对图形的术语不太满意,所以我所说的"调整色调"就是做了名为"Hue/saturation"的Photoshop操作:这是统一改变图像的颜色,如下所示:



仅供参考,Photoshop为此色调设置使用-180到+180的比例(其中-180等于+180),这可能代表HSL色调比例(以0-360度表示).
我正在寻找的是一个函数,给定PIL图像和[0,1]内的浮动色调(或[0,360]内的int,无关紧要),返回图像,其色调被移位如上例所示的色调.
到目前为止我所做的是荒谬的,显然没有给出理想的结果.它只是将原始图像与填充颜色的图层混合了一半.
import Image
im = Image.open('tweeter.png')
layer = Image.new('RGB', im.size, 'red') # "hue" selection is done by choosing a color...
output = Image.blend(im, layer, 0.5)
output.save('output.png', 'PNG')
Run Code Online (Sandbox Code Playgroud)
(请不要笑)结果: 
提前致谢!
解决方案:这里更新了unutbu代码,因此它完全符合我的描述.
import Image
import numpy as np
import colorsys
rgb_to_hsv = np.vectorize(colorsys.rgb_to_hsv)
hsv_to_rgb = np.vectorize(colorsys.hsv_to_rgb)
def shift_hue(arr, hout):
r, g, b, a = np.rollaxis(arr, axis=-1)
h, s, v = rgb_to_hsv(r, g, b) …Run Code Online (Sandbox Code Playgroud) 有没有办法使用GLSL(片段着色器)有效地改变2D OpenGL纹理的色调?
有人有一些代码吗?
更新:这是user1118321建议的代码:
uniform sampler2DRect texture;
const mat3 rgb2yiq = mat3(0.299, 0.587, 0.114, 0.595716, -0.274453, -0.321263, 0.211456, -0.522591, 0.311135);
const mat3 yiq2rgb = mat3(1.0, 0.9563, 0.6210, 1.0, -0.2721, -0.6474, 1.0, -1.1070, 1.7046);
uniform float hue;
void main() {
vec3 yColor = rgb2yiq * texture2DRect(texture, gl_TexCoord[0].st).rgb;
float originalHue = atan(yColor.b, yColor.g);
float finalHue = originalHue + hue;
float chroma = sqrt(yColor.b*yColor.b+yColor.g*yColor.g);
vec3 yFinalColor = vec3(yColor.r, chroma * cos(finalHue), chroma * sin(finalHue));
gl_FragColor = vec4(yiq2rgb*yFinalColor, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
这是与参考相比的结果:

我试图在里面用Q切换I,但即使在0°左右,结果也是错误的
你有什么提示吗? …
我有一个 Pandas 数据集,名为titanic我正在绘制条形图,如 Seaborn 官方文档中所述,使用以下代码:
import seaborn as sns
titanic = sns.load_dataset("titanic")
sns.catplot(x="sex", y="survived", hue="class", kind="bar", data=titanic)
Run Code Online (Sandbox Code Playgroud)
这会产生以下图:
如您所见,色调由 表示class。如何手动选择色调顺序以便反转当前色调顺序?
我有一个白色的png图像,它是图标的一部分.
我想改变它的颜色以获得彩色图标.
我知道可以使用色调/饱和度设置,但不知道如何实现特定的颜色输出.
我正在使用Axialis Icon Workshop(我也有Photoshop CS5).colourize选项以及Hue,Saturation和Brightness调整将有助于获得任何颜色输出.但我特别想要颜色#3366CC.
有没有解决方案将我的白色png图像转换为#3366CC彩色图像?
我尝试通过hive查询hbase数据(我正在使用cloudera).我做了一个指向hbase的fiew hive外部表,但事情是Cloudera的Impala无法访问所有这些表.所有hive外部表都出现在Metastore管理器中,但是当我在Impala中执行一个简单的"show tables"时,我看到缺少3个表.这会是特权问题吗?我看到在Metastore管理器中,每个人都可以读取丢失的3个表,所以......
我对图像处理很新.我必须在我的iPhone应用程序项目中实现hue效果.因此,我需要改变色调UIImage.请为我提供任何示例代码或教程链接.
提前致谢
有没有人尝试/成功在没有Cloudera的情况下在Hadoop上安装Hue?
我已经到了能够可靠地重现带有hbase和hive的hadoop集群的地步,并且可以在大约15分钟内完成所有设置.我很想拥有Hue以及所有这一切,而无需返回并重新设置Cloudera.
我在hdfs中有一个表pos.pos_inv,由yyyymm分区.以下是查询:
select DATE_ADD(to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),5),
to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),yyyymm
from pos.pos_inv inv
INNER JOIN pos.POSActvyBrdg Brdg ON Brdg.EIS_POSActvyBrdgId = Inv.EIS_POSActvyBrdgId
where to_date(from_unixtime(unix_timestamp(Inv.nrmlzdwkenddt, 'MM/dd/yyyy')))
BETWEEN DATE_SUB(to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),6)
and DATE_ADD(to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),6)
and inv.yyyymm=201501
Run Code Online (Sandbox Code Playgroud)
我已将查询的分区值提供为201501,但仍然出现错误"
Error while compiling statement: FAILED: SemanticException [Error 10041]: No partition predicate found for Alias "inv" Table "pos_inv"
Run Code Online (Sandbox Code Playgroud)
(schema)分区,yyyymm是int类型,actvydt是日期存储为字符串类型.
除了使用命令行之外,还有一种简单的方法可以使用Hadoop吗?
您使用的是哪种工具,哪种工具最好?
我是Big Data的新手.我想知道Hue.我所知道的关于Hue的是它是一个管理Hadoop生态系统的Web界面.如果我可以安装在我的电脑上(Ubuntu Precise),请告诉我.我正在使用PIG和HIVE以伪分布式模式运行Apache Hadoop 1.2.1
提前致谢