Python: поиск списка в массиве numpy

#python #python-3.x #numpy

#python #python-3.x #numpy

Вопрос:

Я ищу позиции пикселей с одинаковым цветом на RGB-скриншоте.

 def ScreenToArray(box):
  Screenshot = ImageGrab.grab(bbox=box)
  return np.array(Screenshot)

def GetCoordiantes(array, colourWanted):
  coordiantes = np.where(array == colourWanted)
  xyCoordiantes = [[x, y] for x, y in zip(coordinates[0], coordinates[1])]
  return xyCoordiantes

box = (200, 300, 400, 600)
colourWanted = [200, 200, 200]
ScreenArray = ScreenToArray(box)
PixelsCoordinates = GetCoordinates(ScreenArray, colourWanted)
  

Код работает нормально, пока не найдется пиксель ScreenArray , который разделяет число с моим желаемым цветом.

Почему numpy.where(array == [200, 200, 200]) также возвращает координаты для записей списка, подобных [[200, 1, 1]] , и как этого избежать?

Ответ №1:

попробуйте что-то подобное, выглядящее глупо, но работающее

 def getcoor(img,color):
    indxs,_=np.where(img==color)
    return [indxs[i] for i in range(len(indxs)-2) if indxs[i]==indxs[i 1] and indxs[i 1]==indxs[i 2]]