区分 8 种颜色中的一种最准确的方法是什么?

2024-04-13

想象一下我们如何使用一些基本颜色:

RED = Color ((196, 2, 51), "RED")
ORANGE = Color ((255, 165, 0), "ORANGE")
YELLOW = Color ((255, 205, 0), "YELLOW")
GREEN = Color ((0, 128, 0), "GREEN")
BLUE = Color ((0, 0, 255), "BLUE")
VIOLET = Color ((127, 0, 255), "VIOLET")
BLACK = Color ((0, 0, 0), "BLACK")
WHITE = Color ((255, 255, 255), "WHITE")

我想要一个函数,它获取一个三元组作为参数(如 (206, 17, 38)),并且它应该返回它的颜色。例如,(206,17,38)是红色,(2,2,0)是黑色,(0,255,0)是绿色。 从 8 种颜色中选择一种最准确的方法是什么?


简短回答:在独立于设备的色彩空间中使用欧几里得距离(来源:色差 http://en.wikipedia.org/wiki/Color_difference维基百科上的文章)。由于 RGB 与设备相关,因此您应该首先将颜色映射到与设备无关的颜色空间之一。

我建议将 RGB 转换为Lab* http://en.wikipedia.org/wiki/Lab_color_space。再次引用维基百科:

与 RGB 和 CMYK 颜色模型不同, Lab 颜色旨在近似 人类的视觉。

这是一个食谱 http://cookbooks.adobe.com/post_Useful_color_equations__RGB_to_LAB_converter-14227.html进行转换。一旦你拥有了L, a, b值,计算您的颜色与所有参考颜色之间的欧几里德距离,并选择最接近的一种。


事实上,python 颜色数学 http://code.google.com/p/python-colormath/Google Code 上的 Python 模块(GPL v3 下)能够在许多不同的颜色空间和也计算色差.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区分 8 种颜色中的一种最准确的方法是什么? 的相关文章

  • 判断线程是否已经启动

    如何判断Python线程是否已经启动 有一个方法is alive 但这是真的before and while一个线程正在运行 你可以看看ident领域的Thread实例 这Python 2 7 线程文档 http docs python o
  • 多重处理:如何从子进程重定向标准输出?

    注意 我见过multiprocessing Process 的日志输出 https stackoverflow com questions 1501651 log output of multiprocessing process 不幸的是
  • 在 python 2 和 3 的spyder之间切换

    根据我在文档中了解到的内容 它指出您只需使用命令提示符创建一个新变量即可轻松在 2 个 python 环境之间切换 如果我已经安装了 python 2 7 则 conda create n python34 python 3 4 anaco
  • 为什么方法无法访问类变量?

    我试图理解Python中的变量作用域 除了我不明白为什么类变量不能从其方法访问的部分之外 大多数事情对我来说都很清楚 在下面的例子中mydef1 无法访问a 但如果a可以在全局范围 类定义之外 声明 class MyClass1 a 25
  • 无法将较大的 blob 上传到 Azure:azure.core.exceptions.ServiceRequestError:操作未完成(写入)(_ssl.c:2317)

    我正在尝试使用 Python SDK 将一些较大的 blob gt 50MB 上传到我的 Azure 存储容器 connect str os environ AZURE STORAGE CONNECTION STRING blob serv
  • 如何用xlrd读取公式

    我正在尝试做一个解析器 它读取几个 Excel 文件 我通常需要位于行底部的值 您可以在其中找到所有上部元素的总和 因此 单元格值实际上是 sum 或 A5 0 5 可以说 对于使用 Excel 打开此文件的用户来说 它看起来像一个数字 这
  • 以编程方式将列名称添加到 numpy ndarray

    我正在尝试将列名称添加到 numpy ndarray 然后按名称选择列 但这不起作用 我无法判断问题是在添加名称时出现 还是在稍后尝试调用它们时出现 这是我的代码 data np genfromtxt csv file delimiter
  • 如何将同步函数包装在异步协程中?

    我在用着aiohttp https github com aio libs aiohttp构建一个 API 服务器 将 TCP 请求发送到单独的服务器 发送 TCP 请求的模块是同步的 对于我来说是一个黑匣子 所以我的问题是这些请求阻塞了整
  • 别碰我的女人

    我讨厌的一件事迪斯图尔斯 http docs python org distutils 我猜他是邪恶的人 他这样做了 https github com python cpython blob 300dd552b15825abfe0e367a
  • 如何获取 Matplotlib 生成的散点图的像素坐标?

    我使用 Matplotlib 生成散点图的 PNG 文件 现在 对于每个散点图 除了 PNG 文件之外 我还会also就像生成散点图中各个点的像素坐标列表一样 我用来生成散点图 PNG 文件的代码基本上是这样的 from matplotli
  • Docker 日志中的 Python 异常标记为流:stdout

    我想解析和处理来自 docker 容器的所有错误 但当我期望 stderr 时 Python 异常标记为 stdout 举个简单的例子app py raise Exception 然后我在 docker 容器中运行这个文件 但在 var l
  • 与函数复合 UniqueConstraint

    一个快速的 SQLAlchemy 问题 我有一个 文档 类 其属性为 数字 和 日期 我需要确保没有重复的号码同年 是 有没有办法对 数字 年份 日期 进行UniqueConstraint 我应该使用唯一索引吗 我如何声明功能部分 SQLA
  • PermanentTaskFailure:“模块”对象没有属性“迁移”

    我在 google appengine 上使用 Nick Johnson 的批量更新库 http blog notdot net 2010 03 Announcing a robust datastore bulk update utili
  • python 中的基本矩阵转置

    我尝试了 python 中矩阵转置的最基本方法 但是 我没有得到所需的结果 接下来是代码 A 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 print A def TS A B A for i in range len A
  • 向伪 shell (pty) 发出命令

    我尝试使用 subprocess popen os spawn 来运行进程 但似乎需要伪终端 import pty master slave pty openpty os write master ls l 应该发送 ls l 到从属终端
  • scrapy python 请求未定义

    我在这里找到了答案 code for site in sites Link site xpath a href extract CompleteLink urlparse urljoin response url Link yield Re
  • Melt() 函数复制数据集

    我有一个这样的表 id name doggo floofer puppo pupper 1 rowa NaN NaN NaN NaN 2 ray NaN NaN NaN NaN 3 emma NaN NaN NaN pupper 4 sop
  • 获取运行云功能的运行时服务帐户

    有没有办法以编程方式从云功能获取运行时服务帐户的电子邮件 我知道我可以 猜测 默认的 App Engine 帐户 因为它始终是 appspot gserviceaccount com 但这不是我想要的 我本来期待有一些环境变量 https
  • Python 中的迭代器 (iter()) 函数。 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 对于字典 我可以使用iter 用于迭代字典的键 y x 10 y 20 for val in iter y print val 当
  • 如何抑制 Pandas Future 警告?

    当我运行该程序时 Pandas 每次都会给出如下所示的 未来警告 D Python lib site packages pandas core frame py 3581 FutureWarning rename with inplace

随机推荐

  • 从数组 THREE.js 创建纹理

    我正在研究地形生成器 但我不知道如何处理颜色 我希望能够生成一张占据整个 PlaneGeometry 的图像 我的问题是如何根据我的高度图创建一个覆盖整个 PlaneGeometry 没有环绕 的单个图像 我可以想到一种方法 但我不确定它是
  • 更改 TabBarItem 的 ViewController

    是否可以更改 替换 UITabBarController 中选项卡之一的 ViewController 和 View 我想从特定选项卡以任意顺序在 3 个不同的视图控制器之间切换 这就是导航控制器不可能的原因 它们是使用 setViewCo
  • 为什么 TBitBtn 中包含的字形如此丑陋且过时? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Jetty 通过 Maven 正确运行,但作为 jar 运行不正确

    如果我的标题具有误导性 不正确 请提出更具描述性的内容 这是我能想到的最好的内容 我已经使用 spring roo 创建了自己的网络应用程序 但尚未编辑任何代码 我正在使用 Maven 和 jetty 构建并运行 Web 应用程序 当我执行
  • 使用 javascript 自动增加 firebase 中的值

    你好 我正在开发一些 firebase 项目 我可以通过 javascript 将我的数据保存到 firebase 数据库中 但我无法弄清楚如何自动增加数据库的子值 我的子值是 duyuru 您可以在下面看到详细信息 我在下面分享我的代码
  • 如何使用 Groovy 修剪列表中的所有元素?

    我需要在 groovy 或 grails 中修剪列表中的所有元素 最好的解决方案是什么 假设它是一个字符串列表 并且您想要修剪每个字符串 您可以使用扩展运算符 http groovy codehaus org Operators Opera
  • 从数组随机 URL 重定向

    政治动物 contentscript js 加载到清单 json 中列出的每个页面上 该插件将新闻网站网站上的所有图像替换为以下图片 穿西装的动物 作为对新闻的评论 专为 Web 2 打造 2013 年 11 月 20 日 随机图像数组 v
  • 以编程方式将 TabLayout 中的选项卡文本颜色更改为不同颜色

    我的屏幕上有 7 个日期选项卡 选择选项卡时 文本为黑色 而其他可选选项卡的颜色为白色 如果日期是另一个月 我希望文本颜色为灰色 我假设第一个选项卡是 0 第二个选项卡是 1 一直持续到 6 如图所示 我想更改选项卡 3 选项卡 4 选项卡
  • Activity 恢复时的 Android 内部类 TextView 参考

    我有一个扩展 CountDownTimer 的内部类 基本上它是一个简单的倒计时器 用于更新活动中的 TextView 并在计时器完成时播放声音 内部类的代码是 public class SetTimer extends CountDown
  • Python 3.2 有等效的 PyMongo 吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试安装pymongo通过 Python 3 2 到我的 Windows 机器简易安装 却发现由于与Python 3 2不兼容而无法安装
  • 什么是 std::false_type 或 std::true_type?

    我看到它的用法如下 template
  • 何时使用 RecoveryCallback 与 KafkaListenerErrorHandler

    我想了解什么时候应该使用 org springframework retry RecoveryCallback 和 org springframework kafka listener KafkaListenerErrorHandler 截
  • 减少 Docker 容器大小

    我正在关注有关 Docker 的在线教程 作者举了这样一个例子 FROM busybox RUN dd if dev zero of tmp test1 bs 1M count 50 RUN dd if dev zero of tmp te
  • 引用对象的 OQL 语法?

    我在中找到所需的对象visualvm v1 3 8 filter heap objects java lang String hibernate ejb naming it toString 它们显示为 java lang String 3
  • 查询Google/Youtube API剩余配额

    有没有办法通过 Google Youtube API 以编程方式查询当天的剩余配额 None
  • 如何将 CMake 输出保存到文件?

    我通常可以通过以下方式保存 bash 命令的输出 gt gt output file txt 但是当我执行时cmake输出仍然发送到屏幕而不是预期的输出文件 cmake D CMAKE BUILD TYPE RELEASE D CMAKE
  • 如何在Javascript中确定数字是奇数还是偶数[重复]

    这个问题在这里已经有答案了 谁能指点我一些代码来确定 JavaScript 中的数字是偶数还是奇数 我正在尝试做类似的事情 if intellect is even var magic1 intellect 2 else var magic
  • 设计基于 Firebase 的可扩展 Feed 模型

    问题 如何设计一个以 Firebase 作为后端 可扩展的社交网络 提要 可能的答案 MVP 解决方案是设计一个feedsroot 子级 每个用户一个 并在每个关注者的提要中附加来自关注用户的任何新帖子 users user1 name b
  • 重新采样栅格

    我正在尝试将高分辨率 25 米 和分类数据 1 到 13 的森林覆盖栅格重新采样为新的RasterLayer分辨率较低 约 1 公里 我的想法是将森林覆盖数据与其他较低分辨率的栅格数据结合起来 I tried raster resample
  • 区分 8 种颜色中的一种最准确的方法是什么?

    想象一下我们如何使用一些基本颜色 RED Color 196 2 51 RED ORANGE Color 255 165 0 ORANGE YELLOW Color 255 205 0 YELLOW GREEN Color 0 128 0