Необходимость: нужна матрица с этой формой = (любая, любая, 3)
Решение:
COLOR = (255,0,0)
indices = np.where(np.all(mask == COLOR, axis=-1))
indexes = zip(indices[0], indices[1])
for i in indexes:
print(i)
Решение 2:
получить интервал определенного цвета, например КРАСНЫЙ:
COLOR1 = [250,0,0]
COLOR2 = [260,0,0] # doesnt matter its over limit
indices1 = np.where(np.all(mask >= COLOR1, axis=-1))
indexes1 = zip(indices[0], indices[1])
indices2 = np.where(np.all(mask <= COLOR2, axis=-1))
indexes2 = zip(indices[0], indices[1])
# You now want indexes that are in both indexes1 and indexes2
Решение 3 - РАБОТАЕТ
Если предыдущий не работает, тоесть одно решение, которое работает на 100%
Преобразование из канала RGB в HSV.Сделать 2D маску из 3D изображения.2D маска будет содержать значение Hue.Сравнение оттенков проще, чем RGB, поскольку оттенок равен 1 значению, а RGB - вектор с тремя значениями.После того, как у вас есть 2D-матрица со значениями оттенков, сделайте, как указано выше:
HUE1 = 0.5
HUE2 = 0.7
indices1 = np.where(HUEmask >= HUE1)
indexes1 = zip(indices[0], indices[1])
indices2 = np.where(HUEmask <= HUE2)
indexes2 = zip(indices[0], indices[1])
Вы можете сделать то же самое для насыщенности и значения.