Python: поиск списка в массиве NumPy - PullRequest
0 голосов
/ 02 марта 2019

Я ищу позиции пикселей одинакового цвета в снимке экрана 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, который делит число с моим разыскиваемымcolor.

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

1 Ответ

0 голосов
/ 02 марта 2019

попробуйте что-то вроде этого, выглядит глупо, но сработало

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]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...