我正在寻找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]]
之类的列表条目的坐标,以及如何避免这种情况?
答案 0 :(得分:0)
尝试这种看起来很愚蠢但可行的方法
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]]