如何将 8 位颜色的表示形式转换为相应的 python curses 颜色?

How to turn representation of 8-bit colors to corresponding python curses colors?

我正尝试在 python curses 中的终端应用程序中显示低分辨率图像。我使用 numpy 获取图像每个像素的 rgb 颜色。我正在使用以下方法将每个像素更改为相应的 8 位颜色:color = int((r*6/256)*36 + (g*6/256)*6 + (b*6/256) - 1) 并使用 color 作为新的 init_pair,一切正常,除了颜色,它们甚至都不相似。所以我的问题是:有什么方法可以将 8 位颜色的表示形式转换为 256 python curses 颜色中相应的一种颜色?

我的代码有一部分:

def show_image(h, w, img_arr, window):
    for y in range(h):
        for x in range(w):
            pix = img_arr[y][x]
            color = int((pix[0]*6/256)*36 + (pix[1]*6/256)*6 + (pix[2]*6/256) - 1)
            curses.init_pair(color, color, color)
            window.addstr(10+y, x+1, "#", curses.color_pair(color))

你必须告诉 curses 颜色是什么,例如,使用 init_color(并且 that 只适用于处理颜色初始化的终端,使用具有 initc 的终端描述)。此外,在 init_pair 中使用颜色值作为对数可能不会像您预期的那样工作。