Вам следует избегать зацикливания изображений и использовать такие функции, как getpixel()
, чтобы получить доступ к каждому пикселю, так как он очень медленный - особенно для больших изображений, если вы используете современные 4-5k экраны.
Как правило, лучше преобразовать изображение PIL в массив Numpy, а затем использовать векторизованные процедуры Numpy для обработки изображений.Итак, в конкретных терминах, скажем, вы получаете изображение PIL либо путем захвата экрана, либо открыв файл:
im = Image.open('someFile.png')
, затем вы можете создать массив Numpy из изображения следующим образом:
n = np.array(im)
и ищите черные пиксели следующим образом:
blacks = np.where((n[:, :, 0:3] == [0,0,0]).all(2)))
, который даст вам массив x
координат и массив y
координат черных пикселей, например, вы можете сделать:
xcoords, ycoords = np.where((n[:, :, 0:3] == [0,0,0]).all(2))