问题标签 [hsl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
15576 浏览

c++ - OpenCV C++:将 RGBA 转换为 HSL,然后拆分通道

对于一些图像分割工作,我想在 HSL 颜色空间中使用图像的亮度通道。

为此,我将 RGBA 图像转换为 RGB,然后再转换为 HSL。在颜色转换之后,我使用 将图像分割成它的颜色平面cv::mixChannels,这为我提供了饱和度/亮度平面的黑色输出。

代码:

也许我搞砸了什么cv::mixChannels

编辑

这是cv::split我使用的代码,Xcode 给了我错误:

代码:

错误:

编辑 2

明白了,这行得通:

现在色调平面完全是黑色的,但饱和度和亮度平面看起来还不错……</p>

0 投票
1 回答
253 浏览

php - 用 HSL + GD 替换色调?

我们正在使用具有三种蓝色色调(和)的基础图像#645591,其中一种用户选择的颜色将替换第一个蓝色值(基础),它将生成两种色调以替换额外的两种颜色。#6B90CA#7BC8EF

我发现这个答案非常有效和有用,但问题是如何计算一种颜色和另一种颜色之间的差异,所以我可以在完全不同的颜色中重复使用这种差异?

首先,我认为我可以得到 RGB 差异并将其添加到新颜色中,这对我来说是天真的。

然后,经过一番研究,似乎 HSL 是要走的路,所以我计算了基础蓝色(第一个)和接下来的两个值之间的差异,这样我可以确定选择另一个值并添加差异,对? 嗯......事实证明它没有:

下一个也是当前的尝试是单独保留色调值并添加饱和度和亮度值的原始差异,结果非常好,但我不确定它是否适用于不同的颜色。

  • 有没有办法在颜色变化时保持色调?
  • HSL是要走的路吗?
  • 我有一种将其转换为灰度然后从那里着色的感觉,对吗?

这是代码,我用 CSS 来测试这个概念,但工具是 PHP+GD。

0 投票
1 回答
1038 浏览

javascript - 如何在jquery中改变颜色亮度

我创建了一个色板和一个滑块来控制颜色的明暗。我想根据滑块值更改颜色亮度。我尝试了什么:

在这里,我将颜色转换为 hsl 并尝试操纵l值,但没有得到正确的公式来操纵。谁能帮帮我?

0 投票
2 回答
2032 浏览

c++ - 平均循环值(特别是 HSL 配色方案中的色调)

所以我试图弄清楚如何计算一些颜色由 HSL 值表示的对象的平均色调。值得庆幸的是,我偶然发现了这篇 Stack Overflow 帖子,并着手实施最佳答案中提供的算法(我正在使用 C++)。

不幸的是,我的实现似乎不起作用。在这里,完整的;请注意,虽然我写了“色调”,但我使用的是角度,以度为单位,根据初始实现(从 0-360 角度切换到 0-256 色调,一旦我知道我的代码有效,应该不难)。

而不是 3 的预期答案(因为在这个方案中 355 应该等于 -5),我得到 86.9951。

有人可以指出我做错了什么吗?这似乎很基本。

0 投票
2 回答
7117 浏览

colors - 计算两个 HSI 颜色值之间的颜色表观差异

我在 HSI(色相饱和度和强度)中有两个颜色值,我想要一个代表两种颜色之间视觉差异的数字。色调是介于 0 和 360 之间的数字。饱和度为 0 到 1,强度为 0 到 1。

例如,让我们考虑饱和度为 100% 且强度为 100% 时的红色和蓝色。 在这个网站上是一种通过输入以下文本来显示颜色的方法。

红色是:hsv 0、100%、100%

蓝色是:hsv 240、100%、100%

在此处输入图像描述

显然这是两种非常不同的颜色,所以我可以尝试计算颜色之间差异的一种简单方法是使用色调分量并计算色调的绝对差异,这将是 120 (360-240),因为 360 也等于0 色调。

问题出现在饱和度或强度非常暗或非常亮的情况下,考虑非常深的红色和蓝色。

深红色是:hsv 0、100%、20%

深蓝色是:hsv 240, 100% 20%

在此处输入图像描述

显然,这两种颜色之间的视觉差异小于明亮的红色和蓝色,如果被要求比较差异,人类会这样说。我的意思是,问朋友“哪一对颜色最不同?” 他们可能会说顶部是鲜红色的蓝色。

我正在尝试计算人类会注意到的两种颜色之间的差异。如果一个人看两种颜色 a 和 b,然后看两种颜色 c 和 d,他会注意到哪些颜色最不同。首先,如果颜色很亮(但不是太亮),那么差异是基于色调的。如果颜色太亮(例如白色)或太暗(例如黑色或太灰),则差异较小。

应该有一个函数 diff ,其中 x=diff(a,b) 和 y=diff(c,d) 产生 x 和 y,我可以使用 x 和 y 比较差异以找到最不同的颜色或最少不同的颜色。

0 投票
2 回答
577 浏览

javascript - 在随机 Javascript 中将 RGB 值转换为 HSL 值

我在这个网站的媒体框上有一个随机的颜色覆盖。

http://www.reportageborsen.se/reportageborsen/wordpress/

我从 stackoverflow 的伙伴那里得到了一些非常好的帮助,最终得到了这个脚本:

小提琴链接:http: //jsfiddle.net/b5ZPq/3/

然而,我希望有更多更亮的颜色和更少的灰色。我知道可以使用 HSL 值而不是 RGB 值来完成。

所以我尝试将 css 背景 rgb 值转换为 hsl 值并转换脚本,但我没有让它工作。

http://jsfiddle.net/zolana/Kc9U4/5/ (小提琴,更新,工作:http: //jsfiddle.net/zolana/Kc9U4/9/

(我不是在寻找将所有 RGB 值转换为 HSL 值的脚本(我知道有用于此目的的脚本),而是为这个特定任务提供可靠的脚本。)

0 投票
2 回答
11380 浏览

c# - 更快的算法来改变位图中的色相/饱和度/亮度

我正在尝试过滤位图图像以增加或减少色相、饱和度和亮度值。

我的代码运行良好,但速度很慢

我将两个位图锁定在内存中,即原始源和当前目标。用户可以移动各种轨迹栏控件来修改每个值,然后将其转换为 HSL 值。例如,轨迹栏上的值对应于 -1.0 到 1.0 的范围。

每次引发跟踪栏值更改的事件时,我都会运行一个函数来锁定目标位图并将 HSL 值应用于源位图,然后将结果存储在目标位图中。完成后,我解锁目标位图并在屏幕上绘制图像。

以前我对其他过滤器使用查找表,因为我正在执行每字节操作。但是我不知道如何使用 HSL 来应用它。这是我正在使用的代码:

这是我的 ModifyBrightness 函数:

所以基本上如果他们的亮度滑块在最中间,它的值将是 0,当我将它传递给函数时,我会将其转换为“1.0”,因此它将亮度乘以 1.0,这意味着它不会改变。如果他们将滑块一直拖到右侧,它的值将是 100,这将导致修改器为 2.0,因此我将亮度值乘以 2.0 使其翻倍。

0 投票
1 回答
458 浏览

c# - Color.GetSaturation() 不工作?

我使用 HSL(HSL = HSB 作为 Heu 饱和亮度)滤色器。要将颜色转换为 HSL,我会:

这段代码的问题是 HSLheu 工作正常,HSLlight 也工作正常,但是当我使用带有一些灰色的颜色时,HSLsat 不能反映正确的值。根据我所读到的内容,灰色应该是 0,纯色应该是 1。所以在我的情况下,这是从 0 到 100,但是如果我检查它以查看饱和度是否在某个范围内,这不起作用。

0 投票
0 回答
1011 浏览

colors - 计算 HSL 主颜色值(红色、黄色、绿色、洋红色、蓝色和紫色)

如何以数学方式计算HSL主色的值?
当然,我可以在程序中对它们进行硬编码,但我仍然对如何确定颜色是主要颜色还是组合颜色感兴趣。在 HSL 色环中必须有一个内接六边形,所以我需要它的角所在的角度。

0 投票
1 回答
1290 浏览

opencl - OpenCL RGB->HSL 并返回

我已经通过了所有资源并且无法解决我的问题。

我的主机代码调用 rgb2hsl 内核,然后调用 hsl2rgb 内核。我最终应该得到与我开始时相同的图像,但我没有。我的新图像色调在某些区域关闭。

红色区域不应该在那里。这是发生的情况的屏幕截图:

在此处输入图像描述

这是原图

在此处输入图像描述

这是代码: