相关疑难解决方法(0)

检查颜色相似性的算法

我正在寻找一种比较两种RGB颜色并生成其相似性值的算法(其中相似性意味着"与人类平均感知相似").

有任何想法吗?

编辑:

由于我不能回答,我决定将我的"解决方案"作为问题的编辑.

我决定在我的应用程序中使用(非常)小的真彩色子集,以便我可以自己处理颜色的比较.我使用大约30种颜色,并使用它们之间的硬编码距离.

由于它是一个iPhone应用程序,我使用Objective-C,实现或多或少是一个表示下表的矩阵,它显示了颜色之间的距离.

在此输入图像描述

algorithm rgb comparison colors

77
推荐指数
5
解决办法
3万
查看次数

在什么情况下我会使用元组作为字典键?

我正在研究列表和元组之间区别(在Python中).一个显而易见的是元组是不可变的(初始赋值后不能更改值),而列表是可变的.

文章中的一句话让我:

只有不可变元素可以用作字典键,因此只能使用元组而不是列表作为键.

我很难想到我想使用元组作为字典键的情况.您能提供一个示例问题,这将是一个自然,高效,优雅或明显的解决方案吗?

编辑:

谢谢你的例子.到目前为止,我认为一个非常重要的应用是缓存函数值.

python dictionary tuples list

65
推荐指数
6
解决办法
6万
查看次数

Python - 找到相似的颜色,最好的方法

我已经创建了一个函数来查找图像中的颜色,并返回x,y.现在我需要添加一个新功能,在那里我可以找到具有给定容忍度的颜色.应该容易吗?

用于在图像中查找颜色的代码,并返回x,y:

def FindColorIn(r,g,b, xmin, xmax, ymin, ymax):
    image = ImageGrab.grab()
    for x in range(xmin, xmax):
        for y in range(ymin,ymax):
            px = image.getpixel((x, y))
            if px[0] == r and px[1] == g and px[2] == b:
                return x, y

def FindColor(r,g,b):
    image = ImageGrab.grab()
    size = image.size
    pos = FindColorIn(r,g,b, 1, size[0], 1, size[1])
    return pos
Run Code Online (Sandbox Code Playgroud)

结果:

从答案中得出,比较两种颜色的常规方法是欧几里德距离或切比雪夫距离.

我决定大多使用(平方)欧几里德距离和多个不同的颜色空间.LAB,deltaE(LCH),XYZ,HSL和RGB.在我的代码中,大多数颜色空间使用平方的欧氏距离来计算差异.

例如,LAB,RGB和XYZ是一个简单的平方euc.距离的诀窍是:

if ((X-X1)^2 + (Y-Y1)^2 + (Z-Z1)^2) <= (Tol^2) then
  ...
Run Code Online (Sandbox Code Playgroud)

LCH和HSL稍微复杂一点,因为它们都有圆柱形色调,但是有些数学解决了这个问题,那么它就是使用平方的eucl.这里也是.

在大多数情况下,我为每个通道添加了"单独的参数"(使用1个全局容差和替代"修饰符" HueTol := Tolerance * hueModLightTol := …

python colors find

13
推荐指数
2
解决办法
9429
查看次数

如何将函数直接映射到列表列表?

我为图像构建了一个像素分类器,对于图像中的每个像素,我想定义它属于哪个预定义的颜色簇。它有效,但每张图像大约 5 分钟,我想我正在做一些肯定可以优化的非 Pythonic 的事情。

我们如何将函数直接映射到列表列表上?

#First I convert my image to a list
#Below list represents a true image size
list1=[[255, 114, 70],
[120, 89, 15],
[247, 190, 6],
[41, 38, 37],
[102, 102, 10],
[255,255,255]]*3583180
Run Code Online (Sandbox Code Playgroud)

然后我们定义了将颜色映射到的集群以及执行此操作的函数(取自PIL 库

#Define colors of interest
#Colors of interest 
RED=[255, 114, 70]
DARK_YELLOW=[120, 89, 15]
LIGHT_YELLOW=[247, 190, 6]
BLACK=[41, 38, 37]
GREY=[102, 102, 10]
WHITE=[255,255,255]

Colors=[RED, DARK_YELLOW, LIGHT_YELLOW, GREY, BLACK, WHITE]

#Function to find closes cluster by root and squareroot distance …
Run Code Online (Sandbox Code Playgroud)

python optimization performance numpy list

9
推荐指数
1
解决办法
369
查看次数

Python - 从提供颜色列表中找到最接近颜色的颜色

我有一个包含 20 种颜色的列表,每种颜色都是这样的 (0,0,0)(rgb) 但具有不同的值,我需要找到最接近我给出的颜色,例如 (200, 191, 231) . 问题是我不确定我应该如何检查收盘价是什么颜色,以及我应该如何在列表中设置所有这些颜色值?在数组中?

我一直在想也许添加所有的颜色,例如 (1,2,3) = 4 然后找到最接近的,但我不确定这是否是个好主意..

这是颜色列表:

#(0, 0, 0) - Black
#(127, 127, 127) - Gray
#(136, 0, 21) - Bordeaux
#(237, 28, 36) - red
#(255, 127, 39) - orange
#(255, 242, 0) - yellow
#(34, 177, 76) - green
#(203, 228, 253) - blue
#(0, 162, 232) - dark blue
#(63, 72, 204) - purple
#(255, 255, 255) - white
#(195, 195, 195) - light gray
#(185, 122, …
Run Code Online (Sandbox Code Playgroud)

python rgb

8
推荐指数
2
解决办法
5842
查看次数