Вот решение для numpythonic. Библиотека Numpy ускоряет операции везде, где это возможно.
- Предполагается, что цвет:
color = (235, 187, 7)
indices = np.where(img == color)
- Я использовал метод numpy.where () для извлечения индексов кортежей из двух массивов, где первый массив содержит x-координаты цветных пикселей (235, 187, 7), а второй массив содержит y-координаты. из этих пикселей.
Теперь indices
возвращает что-то вроде следующего:
(array([ 81, 81, 81, ..., 304, 304, 304], dtype=int64),
array([317, 317, 317, ..., 520, 520, 520], dtype=int64),
array([0, 1, 2, ..., 0, 1, 2], dtype=int64))
- Затем я использовал метод zip (), чтобы получить список кортежей, содержащих эти точки.
coordinates = zip(indices[0], indices[1])
- Но если вы заметили, поскольку это цветное изображение с тремя каналами, каждая координата будет повторяться трижды. Мы должны сохранять только уникальные координаты. Это можно сделать, используя метод
set()
.
unique_coordinates = list(set(list(coordinates)))