Есть ли способ проверить, есть ли список в np.array? - PullRequest
1 голос
/ 01 октября 2019

Я хочу найти способ проверить, имеет ли мое изображение какое-либо конкретное значение RGB.

У меня есть список

rgb = [128,134,45]

и изображение

img = array([[[0,0,0],[128,134,45],[128,134,45],...,[0,0,0],[0,0,0],[0,0,0]]]) shape = (64,64,3)

и хотите получить позиции (i, j), где rgb соответствует img [j] [i], например pos = [(0,1),(0,2),...]

Я пытался использовать «в», как if rgb in img: brbr, но не сработало.

Ответы [ 2 ]

3 голосов
/ 01 октября 2019
>>>np.where((img==rgb).all(axis=2))
(array([0, 0], dtype=int32), array([1, 2], dtype=int32))

это дает вам индексы ваших значений RGB

img[0][1] и img[0][2]

2 голосов
/ 01 октября 2019

Аналогично ответу @ Bendik, но на этом дополнительном шаге вы получите массив всех совпадающих местоположений:

np.rot90(np.array(np.where((img==rgb).all(axis=2))))

Например:

img = np.zeros((64,64,3))
rgb = [128,134,45]
img[1,2] = rgb
img[23,32] = rgb
# These are the values we want to find - (1,2) and (23,32)
result = np.rot90(np.array(np.where((img==rgb).all(axis=2))))
print(result)

#OUTPUT:
array([[23, 32],
       [ 1,  2]], dtype=int64)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...