gpt4 book ai didi

python - 从 ImageGrab 定位黑色像素的位置

转载 作者:行者123 更新时间:2023-11-30 21:58:57 25 4
gpt4 key购买 nike

我目前正在创建一个 PianoTiles AI,它必须从 ImageGrab 中找到所有黑色像素。我已经获得了图像抓取的所有位置,但是我需要找出其中是否有黑色像素,如果有,它们在哪里,以便我的人工智能可以单击它们。下面我放了我的代码的片段。

我已经在网上浏览过,但找不到任何东西。我认为代码是这样的。

from PIL import ImageGrab, ImageOps    

class Coordinates:
lines = [
(520, 300, 525, 760),
(630, 300, 635, 760),
(740, 300, 745, 760),
(850, 300, 855, 760)]
restartcheck = (660, 590, 725, 645)
restartbtn = (695, 615)


blackpixelpositions = []

def findtiles():
for line in Coordinates.lines:
i = ImageGrab.grab(line)
for pixel in i.getdata():
#if pixel is black
# x, y = pixel position
blackpixelpositions.append((x,y))

我所需要的就是上面的代码可以工作并给我黑色像素位置。

最佳答案

您应该尝试避免循环图像并使用诸如 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))

关于python - 从 ImageGrab 定位黑色像素的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54733253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com