#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]]