从 1 通道阵列到带有 if 条件的 3 通道

img是彩色图像(3 个通道的数组)。


img_sc一个与img大小相同但有 1 个通道的零数组。


此操作将 rgb 图像(包含 5 个类的分段图像)的颜色映射到包含类 ID 的 ID 图像:


img_sc[np.logical_and(np.logical_and(img[:,:,0]==170,img[:,:,1]==170),img[:,:,2]==170)] = 1

img_sc[np.logical_and(np.logical_and(img[:,:,0]==0,img[:,:,1]==255),img[:,:,2]==0)] = 2

换句话说,在分割图像中,道路是灰色的 (170, 170,170) 并且它的类 ID 是 1 ,草是 (0,255,0) 并且它的 ID 是 2 等到其他类,所以没有图像我有一个包含 1 个通道的数组,其中只包含 IDs 。


我需要执行与此操作相反的操作,并转换包含 ID 的 1 通道数组,如下所示:


[[3 3 3 ... 4 4 4]

 [3 3 3 ... 4 4 4]

 [3 3 3 ... 4 4 4]

 ...

 [3 3 3 ... 2 2 2]

 [3 3 3 ... 2 2 2]

 [3 3 3 ... 2 2 2]]

进入包含 RGB 颜色的 3 通道数组:


[[[102 102  51]

  [102 102  51]

  [102 102  51]

  ...

  [  0 120 255]

  [  0 120 255]

  [  0 120 255]]


 [[102 102  51]

  [102 102  51]

  [102 102  51]

  ...

  [  0 120 255]

  [  0 120 255]

  [  0 120 255]]


 [[102 102  51]

  [102 102  51]

  [102 102  51]

  ...

  [  0 120 255]

  [  0 120 255]

  [  0 120 255]]


 ...


 [[102 102  51]

  [102 102  51]

  [102 102  51]

  ...

  [  0 255   0]

  [  0 255   0]

  [  0 255   0]]


 [[102 102  51]

  [102 102  51]

  [102 102  51]

  ...

  [  0 255   0]

  [  0 255   0]

  [  0 255   0]]


 [[102 102  51]

  [102 102  51]

  [102 102  51]

  ...

  [  0 255   0]

  [  0 255   0]

  [  0 255   0]]]



梵蒂冈之花
浏览 119回答 2
2回答

倚天杖

h, w, c = img.shapeout = np.zeros((h,w,c))out[class[:, :] == 1, :] = [170, 170, 170]out[class[:, :] == 2, :] = [0, 255, 0]可以工作,或者h, w, c = img.shapeout = np.zeros((h,w,c))out[class[:, :] == 1, 0] = 170out[class[:, :] == 1, 1] = 170out[class[:, :] == 1, 2] = 170out[class[:, :] == 2, 1] = 255

陪伴而非守候

arr = np.stack((arr,)*3, axis=-1)arr[np.where((arr == 1).all(axis=2))] = [170, 170, 170]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python