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)] = 1img_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]]]
2 回答
倚天杖
TA贡献1828条经验 获得超3个赞
h, w, c = img.shape
out = np.zeros((h,w,c))
out[class[:, :] == 1, :] = [170, 170, 170]
out[class[:, :] == 2, :] = [0, 255, 0]
可以工作,或者
h, w, c = img.shape
out = np.zeros((h,w,c))
out[class[:, :] == 1, 0] = 170
out[class[:, :] == 1, 1] = 170
out[class[:, :] == 1, 2] = 170
out[class[:, :] == 2, 1] = 255
陪伴而非守候
TA贡献1757条经验 获得超8个赞
arr = np.stack((arr,)*3, axis=-1)
arr[np.where((arr == 1).all(axis=2))] = [170, 170, 170]
添加回答
举报
0/150
提交
取消