autoit.pixel_search 未找到返回颜色

autoit.pixel_search returning color is not found

我正在尝试获取屏幕上特定像素值的坐标,但我似乎无法获得任何结果。我得到的错误是 "autoit.autoit.AutoItError: color is not found".

为了验证我的代码,我用鼠标移动了具有我想要的颜色的像素。这不是必需的,这只是测试的一部分。我有两台显示器,我担心像素搜索无法区分我想要的显示器。所以为了测试 autoit 知道在哪里看,我做了一个基本的 "move mouse"。果然它移动到我在显示器一上的图像,所以我知道它有正确的显示器。

其次我测试了 "autoit.pixel_get_color" 是否可以获取我想要的值,它确实是 (65281)。我想我可能必须使用十进制而不是 Windows 信息应用程序提供的十六进制.

我用下面的代码进行了测试,这是使用 SciTE - light(.au3 文件)的代码,它工作正常。

$coord = PixelSearch(0, 0, 1434, 899, 0x00FF02)

If Not @error Then
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
EndIf

我测试了用 pyautogui 抓取像素,最终我可以做到,但它不像 autoit 那样 "clean",所以我尽量避免它。 Autoit 有一个漂亮的 Window 信息屏幕,可以显示颜色,因此只需将数字插入我的脚本就非常容易。

这是我目前在 Python.

中编写的代码
import autoit

import pyautogui

pyautogui.confirm('Press OK to start running script')

autoit.mouse_move(374,608,10) # move mouse to where the color I want is located.

pixelcolor = autoit.pixel_get_color(374,608) #get color of pixel

pixelsearch = autoit.pixel_search(0,0,1434,899,0x00FF02) # search entire screen for color

pixelsearch = autoit.pixel_search(0,0,1434,899,65281) # Tried using the value from the get_color, still same error.

有什么想法吗?

所以我想出了解决问题的方法。我不知道它为什么起作用或导致问题的原因,但现在这是解决方案

PixelSearch 的正确公式是 PixelSearch(left, top, right, bottom)。

在玩弄数字后,pyautoit 似乎正在使用(右、上、左、下)。如果我用那个公式代入我的数字,它就会完美地工作,除了我的第三台显示器。

我的第三台显示器似乎可以使用(左、上、右、下)。我想知道它是否与负数(-1680、0、-3、1050)有关,不能 100% 确定。

我在我的工作电脑(两台显示器)、家用电脑(三台显示器)和我的笔记本电脑上测试了这个。在所有情况下(右、上、左、下)都能正常工作,除了第三台显示器上的家用电脑。

希望这对以后的其他人有所帮助。