У меня есть изображение RGB, хранящееся в виде массива.У меня есть цветовой массив, и эти цвета я буду искать в изображении и заменять эти значения RGB тем же скалярным значением.Остальные значения RGB, которые не совпадают, должны быть просто заменены на 0.
Цвета, которые я ищу, могут быть такими, как показано ниже:
colors = []
colors.append((69, 0, 9, 17))
colors.append((196, 127, 128,1))
colors.append((199, 5, 126, 19))
colors.append((55, 127, 126, 4))
colors.append((0, 127, 29, 2))
colors.append((68, 6, 124, 18))
4-е значения для каждого цветаэто значение, которое заменит соответствующие значения RGB.
Я пытался использовать np.asin
, но он не ищет массивы.Он ищет только скаляры.Прямо сейчас я использую цикл for, но он очень медленный.
for i in range(image.shape[0]):
for j in range(image.shape[1]):
match = -1
for k in range(len(colors)):
match = k
for l in range(3):
if image[i,j,l] != colors[k][l]:
match=-1
break
if match >=0 :
break
val = [0,0,0]
if match >= 0:
val = [colors[match][3],colors[match][3],colors[match][3]]
for l in range(3):
image[i,j,l] = val[l]
Любой эффективный подход будет очень признателен.