OpenCV Python中是否有类似pil putpalette的功能?

时间:2019-10-23 23:40:34

标签: python opencv python-imaging-library

我正在尝试使用Opencv python从1个通道类信息图像制作彩色图像。图像由每个像素的0〜15组成。

我看到一些使用PIL putpalette进行这项工作的代码。但是,我想将此代码更改为Opencv。

为此我使用列表为该工作制作了双for循环。

列表(自定义调色板)的长度为256 * 3,请参见以下内容:

palette = [0, 0, 0, # r g b for pixel 0 

           128,0,0, # r g b for pixel 1

           0, 255, 0, # r g b for pixel 2

           ...
           0, 255, 128 # r g b for pixel 15
           ]
zero_pad = 256 * 3 - len(palette)
for i in range(zero_pad):
    palette.append(0)

这是我编写的代码。输入的pred是1通道图像(每个像素0〜15)

pred_r = np.zeros_like(pred)
pred_g = np.zeros_like(pred)
pred_b = np.zeros_like(pred)

for x in range(0, pred.shape[0]):
    for y in range(0, pred.shape[1]):
        pred_r[x][y] = palette[pred[x][y] * 3]
        pred_g[x][y] = palette[pred[x][y] * 3 + 1]
        pred_b[x][y] = palette[pred[x][y] * 3 + 2]

colorized_pred = cv2.merge((pred_b, pred_g, pred_r))

参考PIL代码

pred = Image.fromarray(pred).convert('L')
pred.putpalette(palette)

For循环需要很长时间。所以我想知道是否有任何opencv函数,例如参考PIL代码。谢谢

0 个答案:

没有答案