使用自定义颜色图将3通道图像映射到1通道

时间:2019-02-02 14:37:04

标签: python opencv

我试图弄清楚如何使用OpenCV函数LUT将图像的某些3通道像素映射到定义为映射函数的值。我可以使用for循环和一些切换用例来对此进行硬编码,但是我想看看如何使用OpenCV进行编码。 以下是映射标准,这意味着映射为[0,0,0]-> 0,[255,0,0]-> 1,[255,255,0]-> 2等。 我发现OpenCV文档无法非常直观地解决此问题。有人可以使用Python帮我吗?

labelmap = [0 0 0; 255 0 0; 255 255 0; 128 0 255; 255 128 0; 0 0 255; 128255255; 0 255 0]

这是我目前不使用LUT的解决方案:

import numpy as np

label = np.zeros((5,5,3))
label[0,0,:] = [255,0,0]
label[1,0,:] = [255,255,0]
label[2,0,:] = [0,255,0]

print label

out_label = np.zeros((label.shape[0], label.shape[1]))
mapping = {(0,0,0): 0,
(255,0,0): 1, 
(255,255,0): 2, 
(128,0,255): 3,
(255,128,0): 4,
(0,0,255): 5,
(0,255,0): 6
}

for i in range(label.shape[0]):
    for j in range(label.shape[1]):
        out_label[i,j] = mapping[tuple(label[i,j,:])]

print out_label

0 个答案:

没有答案