简体   繁体   English

Python:从 RGB colors 列表中查找最接近的 RGB 值

[英]Python : Finding the closest RGB values from a list of RGB colors

I am kind of stuck in here, and couldn't find the best performance-effective algorithms to find the 5 closest values to the target value from a list of RGB lists.我有点卡在这里,找不到最佳性能有效的算法来从 RGB 列表中找到与目标值最接近的 5 个值。

The color list:颜色列表:

[[212, 211, 211], [159, 148, 138], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179]]
Target color:  [202, 200, 198]
the expected valaue:
[[#,#,#], [#,#,#], [#,#,#], [#,#,#], [#,#,#]]

I am using this set of color lists to find the images with similar colors.我正在使用这组颜色列表来查找具有相似 colors 的图像。 There may be duplicated values, and omitting the exact value should be considered as these were extracted from a set of images that can be the exact same photos.可能存在重复值,并且应考虑忽略确切值,因为这些值是从一组可以是完全相同的照片的图像中提取的。

Using euclidean distance:使用欧式距离:

import math

def distance(a, b):
    return math.hypot(*(v2 - v1 for v1, v2 in zip(a, b)))

colors = [[212, 211, 211], [159, 148, 138], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179], [216, 213, 211], [185, 176, 167], [186, 183, 179], [177, 175, 174], [184, 172, 157], [229, 225, 221], [53, 48, 44], [127, 114, 103], [230, 229, 227], [218, 215, 210], [209, 203, 192], [96, 82, 68], [121, 100, 86], [206, 204, 199], [151, 149, 132], [232, 233, 233], [50, 46, 45], [188, 173, 163], [185, 164, 140], [136, 126, 115], [202, 200, 198], [124, 111, 97], [122, 101, 85], [212, 211, 211], [159, 148, 138], [172, 171, 164], [114, 106, 97], [96, 82, 68], [92, 85, 74], [200, 196, 194], [191, 189, 189], [186, 182, 179]]
target = [202, 200, 198]

closest = sorted(colors, key=lambda x: distance(target, x))
print(closest[:5])

Without detail definition about what's "closest" RGB, I think this helper may offer you some idea?如果没有关于什么是“最接近”的 RGB 的详细定义,我认为这个助手可能会为您提供一些想法?

import math导入数学

def distance(c1, c2):
    r1,g1,b1 = c1
    r2,g2,b2 = c2
    return math.sqrt((r1 - r2)**2 + (g1 - g2) ** 2 + (b1 - b2) **2)

Then you could pass the color_list to check and match.然后你可以通过 color_list 来检查和匹配。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM