Python:在numpy数组中查找列表

时间:2019-03-02 18:04:52

标签: 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 个答案:

答案 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]]