Colors 创建假调色板并将像素值与其关联

Colors 创建假调色板并将像素值与其关联,colors,qt4,pyqt,color-palette,Colors,Qt4,Pyqt,Color Palette,我有来自红外摄像机的640x480像素的原始像素数据,代表特定的测量温度。这些像素值的16位范围为0到65535 我可以将像素值显示为8位灰度,效果非常好 但现在我想用假调色板来显示这些像素 我注意到这里有两个挑战: 1.创建假调色板。这意味着不仅仅是一个简单的RGB或HSV调色板…我正在考虑从黑色到黄色,到橙色,到红色,最后到紫色的过渡 2.将像素值与调色板上的颜色关联,例如0=黑色,65535=紫色,但31521= 你知道我应该如何处理这个问题吗?我使用Qt4和Python PyQt,但如果

我有来自红外摄像机的640x480像素的原始像素数据,代表特定的测量温度。这些像素值的16位范围为0到65535

我可以将像素值显示为8位灰度,效果非常好

但现在我想用假调色板来显示这些像素

我注意到这里有两个挑战: 1.创建假调色板。这意味着不仅仅是一个简单的RGB或HSV调色板…我正在考虑从黑色到黄色,到橙色,到红色,最后到紫色的过渡 2.将像素值与调色板上的颜色关联,例如0=黑色,65535=紫色,但31521=


你知道我应该如何处理这个问题吗?我使用Qt4和Python PyQt,但如果您能分享解决方案的方法,我也会非常高兴。

一种简单的方法是在您的范围内的某些点定义颜色-在您的示例中,0是黑色,65535是紫色,可能10000是红色,无论您想做什么。使用这些关键rgb值设置一个表,然后在输入值上方和下方的关键值的rgb值之间进行插值,以找到任何给定值的rgb颜色

如果您正在查找值为1000的颜色,并且您的表

value=0, color=(0,0,0)
value=5000, color=(255, 0, 255)

然后在这些值之间进行插值,得到颜色51,0,51

最简单的方法如下: 将无符号short转换为QRgb类型,并在QColor构造函数中使用该类型

unsigned short my_temp=...;
QColor my_clr((QRgb)my_temp);

这将使您的值介于黑色和青色之间。

似乎是一种非常简单的方法,但无法以我想要的方式为像素着色,也无法创建有用的调色板。还是我错了?是的,这似乎是一个很好的方法。另一种方法是为某些点定义颜色,并在1x65536像素地图上使用线性渐变进行颜色填充。然后,我可以用python构建一个字典,并将一个像素值分配给一个具有pixmap中特定颜色的QRgb对象。