在python中对RGB值进行分类

2024-10-01 15:35:55 发布

您现在位置:Python中文网/ 问答频道 /正文

使用枕头

im = Image.open("GameShot.png");
pix = im.load();
PixelColor = pix[x,y]
if PixelColor == green:
    # do stuff

我的问题

pix[x,y]返回一个RGB值,而在我的图像中,我要寻找的颜色并不保持不变。在

  • 或者我需要找到一个新的方法。在
  • 或者我需要一种方法来概括颜色。在

Tags: 方法imageifpng颜色loadgreenopen
1条回答
网友
1楼 · 发布于 2024-10-01 15:35:55

您需要某种函数来将RGB值分类为属于特定颜色。在

接近这一点的一个简单方法是为您要考虑的每种颜色定义一个特定的值(在您的例子中,红色和绿色,如您在下面的注释中所说),然后计算RGB值和这些点之间的manhattan distance。然后你可以选择一个离你最近的点,说你的像素属于这个颜色。在

这将适用于您指定的任何数量的颜色,尽管它可能不总是100%准确,但作为第一近似值已经足够了。在

注意:我无法访问Pillow,所以我不确定什么是数据结构即时负荷()退货。我用(R,G,B)元组给出一个粗略的概念。在

def classify(rgb_tuple):
    # eg. rgb_tuple = (2,44,300)

    # add as many colors as appropriate here, but for
    # the stated use case you just want to see if your
    # pixel is 'more red' or 'more green'
    colors = {"red": (255, 0, 0),
              "green" : (0,255,0),
              }

    manhattan = lambda x,y : abs(x[0] - y[0]) + abs(x[1] - y[1]) + abs(x[2] - y[2]) 
    distances = {k: manhattan(v, rgb_tuple) for k, v in colors.items()}
    color = min(distances, key=distances.get)
    return color

相关问题 更多 >

    热门问题