Для более чистого решения, особенно при работе с несколькими метками , мы могли бы использовать np.searchsorted
для отслеживания значений для сопоставления, например:
# Edit to include more labels and values here
label_ar = np.array([0,1]) # sorted label array
val_ar = np.array([[255, 255, 255, 0],[0, 255, 0, 0.5]])
# Get output array
out = val_ar[np.searchsorted(label_ar, image)]
Обратите внимание, что это предполагает, что все уникальные метки из image
находятся в label_ar
.
Итак, теперь предположим, что у нас есть еще две метки 2
и 3
в image
, что-то вроде этого -
for i in range(0, height):
for j in range(0, width):
if image[i,j] == 0:
new_image[i,j] = [255, 255, 255, 0]
elif image[i,j] == 1:
new_image[i,j] = [0, 255, 0, 0.5]
elif image[i,j] == 2:
new_image[i,j] = [0, 255, 255, 0.5]
elif image[i,j] == 3:
new_image[i,j] = [255, 255, 255, 0.5]
Мы соответствующим образом отредактируем метки и значения и будем использовать то же решение searchsorted
-
label_ar = np.array([0,1,2,3]) # sorted label array
val_ar = np.array([
[255, 255, 255, 0],
[0, 255, 0, 0.5],
[0, 255, 255, 0.5],
[255, 255, 255, 0.5]])