我正试图抓住屏幕上特定像素值的坐标,但我似乎无法获得任何结果。我得到的错误是“autoit.autoit.AutoItError:找不到颜色”。
要验证我的代码,我让鼠标移动具有我想要的颜色的像素。这不是必需的,它只是测试的一部分。我有两个显示器,我担心像素搜索无法区分我想要的显示器。所以测试autoit知道在哪里看我做了一个基本的“移动鼠标”。果然它在显示器上移动到了我的图像,所以我知道它有合适的显示器。
其次我测试了“autoit.pixel_get_color”是否可以获取我想要的值,它确实(65281)。我可能不得不使用小数而不是Windows Info应用程序提供的HEX。
我测试了下面的代码,这是使用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那样“干净”,所以我试图尽可能避免它。 Autoit有一个漂亮的窗口信息屏幕,可以显示颜色,所以只需将数字插入我的脚本就很容易了。
以下是我目前用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.
任何想法?
答案 0 :(得分:1)
所以我想出了如何解决我的问题。我不知道它为什么会起作用或导致问题的原因,但现在这里是解决方案
PixelSearch的正确公式是PixelSearch(左,上,右,下)。
在使用数字后,pyautoit正在使用(右,上,左,下)。如果我使用该公式插入我的数字,它可以完美地工作,除了我的第三台显示器。
我的第三台显示器似乎可以使用(左,上,右,下)。我想知道它是否与负数(-1680,0,-3,1050)有关,而不是100%肯定。
我在我的工作电脑(两台显示器),家用电脑,(三台显示器)和笔记本电脑上进行了测试。在所有情况下(右,上,左,下)都可以工作,除了第三台显示器上的家用电脑。
希望将来帮助其他人。