如何将RGB格式的颜色转换为Hex格式,反之亦然?
例如,转换'#0080C0'为(0, 128, 192).
给定一个系统(例如网站),允许用户自定义某些部分的背景颜色而不是字体颜色(以保持选项数量最少),有没有办法以编程方式确定"光"或"黑暗的"字体颜色是必要的?
我确定有一些算法,但我对颜色,光度等知之甚少,无法自己解决.
我正在寻找一种工具或算法来将HSL颜色转换为RGB.在我看来,HSL并没有被广泛使用,所以我没有太多运气寻找转换器.
当从RGB转换为灰度时,据说应该应用通道R,G和B的特定权重.这些重量为:0.2989,0.5870,0.1140.
据说,其原因是人类对这三种颜色的感知/敏感性不同.有时也会说这些是用于计算NTSC信号的值.
但是,我没有在网上找到这方面的好参考.这些价值观的来源是什么?
language-agnostic rgb colors image-processing computer-vision
所以我设计了编辑照片的几个方案中python使用PIL,其中之一是将图像转换为灰度图像(我避免因使用任何功能PIL).
我已经采用的算法是简单的:对于每个像素(色彩深度为24),我已经计算出的平均R,G和B值,并设置RGB值到该平均.
我的程序生成的灰度图像似乎很准确,但我想知道我是否使用了正确的算法,并且我遇到了一个问题的答案,似乎"正确"的算法是计算的0.299 R + 0.587 G + 0.114 B.
我决定将我的程序与这个算法进行比较.我使用我的程序生成了一个灰度图像,另一个(使用相同的输入)来自一个网站(谷歌的最高结果)'image to grayscale'.
在我的肉眼看来,它们似乎完全相同,如果有任何变化,我看不到它.但是,我决定使用这个网站(谷歌的最佳结果'compare two images online')来比较我的灰度图像.事实证明,在像素的深处,它们有轻微的变化,但没有一个人乍一看是可感知的(差异可以被发现,但通常只有当图像相互叠加或在几毫秒之间切换时) .
我的问题(第一个是主要问题):
我的关键代码(如果需要):
def greyScale(pixelTuple):
return tuple([round(sum(pixelTuple) / 3)] * 3)
Run Code Online (Sandbox Code Playgroud)
'正确'的算法(似乎重量很重):
def greyScale(pixelTuple):
return tuple([round(0.299 * pixelTuple[0] + 0.587 * pixelTuple[1] + 0.114 * pixelTuple[2])] * 3)
Run Code Online (Sandbox Code Playgroud)
当在线比较灰度图像时(突出显示红色是差异,使用10%的模糊):

尽管上面突出显示了像素的变化,但上面的灰度图像看起来几乎完全相同(至少对我而言).
另外,关于我的第一个问题,如果有人感兴趣, …
python algorithm image-comparison image-conversion python-imaging-library
给定背景颜色,如何获得使其在背景颜色上可读的前景色?
我的意思是在程序中自动计算前景色.
或者简化问题,如果从白/黑中选择前景色,如何在程序中进行选择?
我有一个用户设置,他们可以选择警报的颜色.警报是文本或按钮上的背景颜色.但问题在于,如果他们选择深蓝色并且我们有黑色字母,那么对比度就足够了,你无法阅读它.
我试图使功能得到反向相反的颜色,但没有太远.
有这样的功能吗?
我想对一维颜色列表进行排序,以便典型人类彼此感知"相似"的颜色彼此接近.
显然,要获得"完美"是一个困难或可能不可能的问题,因为颜色通常用三维描述,但这并不意味着没有一些分类方法看起来明显比其他方法更自然.
例如,按RGB排序不能很好地工作,因为它将按以下顺序排序,例如:
(1)R = 254 G = 0 B = 0(2)R = 254 G = 255 B = 0(3)R = 255 G = 0 B = 0(4)R = 255 G = 255 B = 0
也就是说,它将交替红色,黄色,红色,黄色这些颜色,其中两个"红色"基本上彼此不可思议地不同,并且两个黄色也彼此不可思议地不同.
但一般来说,HLS排序效果要好得多,我认为HSL甚至更好; 与其中之一,红色将彼此相邻,黄色将彼此相邻.
但是HLS/HSL也存在一些问题; 人们会认为是"黑色"的东西可能会彼此分开很远,人们会认为是"白色"的东西也是如此.
再一次,我明白我几乎不得不承认会有这样的分裂; 我只是想知道是否有人找到了比HLS/HSL更好的方法.我知道"更好"有点武断; 我的意思是"对一个典型的人来说更自然".
例如,我曾经有过一个模糊的想法,但还没有尝试过,或许"L是最重要的,如果它非常高或非常低",但除此之外它是最不重要的.有没人试过这个?它运作良好吗?具体到底你决定"非常低"和"非常高"是什么意思?等等.或者有没有人发现任何可以改善HSL的东西?
我还应该注意到,我知道我可以通过颜色立方体定义空间填充曲线,并按照沿着该曲线行进时遇到的一维顺序对它们进行排序.这将消除感知到的不连续性.但是,这不是我想要的; 我想要比我想完美的小规模分组更好的整体大规模分组.
在此先感谢您的帮助.
我正在使用PHP进行ODP-> HTML转换.我有以下问题:
使用style:use-window-font-color属性指定窗口前景色是否应该用作浅色背景色的前景色和白色用于深色背景色.
(OpenDocument规范版本1.0,15.4.4)
如果我有背景图像,如果此图像是亮还是暗,我该如何检查?
你有什么想法?
提前谢谢,Levu